【发布时间】:2020-06-14 14:55:28
【问题描述】:
我想检测包含字母数字字符、破折号和下划线的用户名的提及。我目前正在使用以下正则表达式:
\b*@[a-zA-z0-9_-]+\b
它适用于简单的场景,但匹配以下文本中的两个 @nomatch 条目:
@match,
查看此链接! https://someurl.com/@nomatch/test。这是一些 文本和一些更多的文本和一些更多的文本。
它将如何处理 myemail@nomatch.net?
这是对 @match 的提及。这是对 @MaTch 的另一个提及。 @__ma-tch__ 太棒了。 @--match--、@ma_tch 和 @_MATCH。
我们不要忘记 @__match__。
此致,@match
我已经尝试为此编写更复杂的正则表达式,但是对于我修复的每个案例,我最终都会破坏另一个案例。
考虑到上述文本,什么是正则表达式可以匹配所有 @match(带有破折号和下划线变体)条目,但不匹配 @nomatch 条目?
编辑:为清楚起见,将所需匹配斜体表示。正则表达式引擎是 .NET Core,语言 C#。
【问题讨论】:
-
注意
\b*无论如何都没有意义。你打算用什么来匹配它?你想匹配@--match--中的@--match--还是仅仅匹配@--match?另外,正则表达式的味道是什么? -
只是猜测:试试
\B(?<!\/)@[a-zA-Z0-9_-]+。但请针对上述问题提供反馈。 -
@WiktorStribiżew 您的建议似乎很有效。为了清楚起见,我提供了修改,但如果您提交答案,我会接受