2016-08-03 88 views
0

这很难解释,我有这个正则表达式([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*) - 它捕获Username:Whatever,它只捕获第一捕获组的用户名。正则表达式 - 复杂捕获

问题是,当我用电子邮件替换用户名部分时,它会捕获电子邮件@后的所有内容。我希望它甚至不会捕获任何东西,甚至不管“无论”位。

我找不到办法做到这一点。

实施例输入的:

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

输出应为:

username:123abc 
Shiny:abc123 

当前正则表达式的输出:

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

使用锚:'^([A-ZA-Z] [。\ w] + | [0-9] [0-9 _] * [A-ZA-Z] + [\ w。] *):(。*)$' – anubhava

+0

@anubhava ^和$不会工作,因为我在哪里搜索我的正则表达式。 –

+0

您可以请[编辑]给一些示例输入和输出?你用什么语言从? – 4castle

回答

1

添加锚^$到开始和正则表达式的端将迫使比赛从头到尾发生d的字符串。

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

如果再激活Multiline mode,它将使每一线,而不是开始和结束的锚匹配。

Regex101 Demo