正则表达式 - 复杂捕获

时间:2016-08-03 16:14:14

标签: regex vb.net

这很难解释,我有这个正则表达式([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*) - 它捕获Username:Whatever并且它只捕获First Capture Group上的用户名。

问题在于,当我用电子邮件替换用户名部分时,它会捕获电子邮件@之后的所有内容。我希望它完全捕获NOTHING,甚至不是“Whatever”位。

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

示例输入:

username@domain.ext:123abc
username:123abc
shiny@gmail.com:abc123
Shiny:abc123

输出应为:

username:123abc
Shiny:abc123

当前正则表达式输出:

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

1 个答案:

答案 0 :(得分:1)

将锚^$添加到正则表达式的开头和结尾会强制匹配从字符串的开头到结尾。

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

如果您激活Multiline mode,则会使锚点在每个的开头和结尾处匹配。

Regex101 Demo