2016-08-03 3 views
0

Это трудно объяснить, у меня есть это Regex ([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*) - он захватывает Username:Whatever, и он захватывает только имена пользователей в First Capture Group.Regex - Complex Capture

Проблема в том, что, когда я заменяю часть имени электронной почтой, она захватывает все после @ электронной почты. Я хочу, чтобы он вообще не записывал НИЧЕГО даже не «какой-то» бит.

Я не могу найти способ сделать это.

Пример входных-х:

[email protected]:123abc 
username:123abc 
[email protected]:abc123 
Shiny:abc123 

Выход должен быть:

username:123abc 
Shiny:abc123 

Current REGEX выходы:

domain.ext:123abc 
username:123abc 
gmail.com:abc123 
shiny:abc123 
+1

Использование якорей: '^ ([A-Za-Z] [. \ Ш] + | [0-9] [. 0-9 _] * [A-Za-Z] + [\ w.] *): (. *) $ ' – anubhava

+0

@anubhava^и $ wont работать из-за того, где im ищет мои Regex's. –

+0

Не могли бы вы [редактировать] дать некоторые примеры входов и выходов? И на каком языке вы это используете? – 4castle

ответ

1

Добавление якоря ^ и $ в начале и в конце регулярного выражения будет заставить совпадения происходить от начала до en d строки.

^([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*)$ 

Если затем активировать Multiline mode, это сделает матч якоря в начале и в конце каждой строки вместо этого.

Regex101 Demo