我有以下RegEx https://www.regex101.com/r/ZvXQmI/2,它匹配任何以@开头的单词。它工作得很好,但是它与文本开头的字符串不匹配。感谢您能否帮助我。此外,RegEx显示它花了1029步。如果可以减少这种情况以提高性能,请高度赞赏。
提前致谢。
答案 0 :(得分:2)
使用字边界。
\B(?<word>@[a-zA-Z]\w+)\b
https://www.regex101.com/r/ZvXQmI/4
实际上,\ B匹配两个单词字符之间的任何位置以及两个非单词字符之间的任何位置。 (需要排除域名,其中@前面有一个单词字符)
Voila,42步,同样的结果。
答案 1 :(得分:1)
如果你只想匹配以@ 开头的任何单词,你可以这样做:
(@\w+)
这是32步骤。 (如果你想要更具体的话,可以使用单词边界\B(@\w+)
)
如果您想保留正则表达式并在开头匹配单词,可以为字符串的开头添加^
,如下所示:
(?:>|\s+|^)(?<word>@[a-zA-Z]\w+)(<|\s+)?
答案 2 :(得分:0)
试试这个
(?<word>@[a-zA-Z]\w+)(<|\s+)?
演示:https://www.regex101.com/r/ZvXQmI/3
如果您只想要以@
开头的单词,可以使用更简单的单词
@[a-zA-Z]\w+