我有以下正则表达式https://www.regex101.com/r/ZvXQmI/2,它将匹配任何以@开头的单词。它工作得很好,但它不匹配文本开头的字符串。感谢您能帮助我。此外,RegEx显示它花费了1029个步骤。如果这可以减少以提高性能,高度赞赏。正则表达式匹配文本开始处的字符串
在此先感谢。
我有以下正则表达式https://www.regex101.com/r/ZvXQmI/2,它将匹配任何以@开头的单词。它工作得很好,但它不匹配文本开头的字符串。感谢您能帮助我。此外,RegEx显示它花费了1029个步骤。如果这可以减少以提高性能,高度赞赏。正则表达式匹配文本开始处的字符串
在此先感谢。
使用字边界。
\B(?<word>@[a-zA-Z]\w+)\b
https://www.regex101.com/r/ZvXQmI/4
有效地,\ B中在两个非单词字符之间的任意位置的两个单词字符之间以及任何位置匹配。 (要求排除域,其中@之前是一个单词字符)
瞧,42个步骤,结果相同。
试试这个
(?<word>@[a-zA-Z]\w+)(<|\s+)?
演示:https://www.regex101.com/r/ZvXQmI/3
如果你只是想与@
开始的话,你可以使用更简单的东西
@[a-zA-Z]\w+
'\ b'确实不是必须的,因为'\ w +'会一直捕捉到字边界。 – 4castle
@ 4castle的权利,这将其降低到37个步骤。 :-) – dognose
你是对的@ 4castle。我删除了\ b并将其缩小到37步。非常感谢。 – Frenz