我使用正则表达式在字符串中查找主题标签:\B#[a-z0-9_-]+
.
I use \B
因为我想匹配仅以开头的单词#
, like hello #there
不喜欢hello#there
.
它运作良好并且匹配主题标签。
但它也错误地匹配了那些已经发生的事件#
, @
or $
之前的符号#
, like ##some
, @#some
or $#some
.
我究竟做错了什么?
这是我的正则表达式:https://regex101.com/r/spdAyj/2 https://regex101.com/r/spdAyj/2
由于紧邻左侧的必须有一个空格或字符串开头#
,您可以使用前导空白边界:
(?<!\S)#[a-z0-9_-]+
See the 正则表达式演示 https://regex101.com/r/3B7lhL/1.
The (?<!\S)
是负数向后看 https://www.regular-expressions.info/lookaround.html如果当前位置左侧紧邻非空白字符,则匹配失败。基本上,它是一个更短、更高效(并且更便携)的版本(?<=^|\s)
/ (?<=\A|\s)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)