我有这个正则表达式来检测主题标签。它不应该与之前的字母匹配,所以我们在正则表达式的开头有一个空格字符:
/( #[a-zA-Z_]+)/gm
问题是它不再匹配句子开头的单词。我如何修改这个正则表达式,以便它不是与空格匹配,而是简单地不匹配它们之前的字母。
谢谢!
答案 0 :(得分:3)
在开头使用
\b
表示word boundary。\b
无效,因为#
不是单词启动。
只需检查字符串或之前的空格开头:(?:^|\s)(\#[a-zA-Z_]+)
另外,请确保您转义#
,因此不会将其解释为评论。
答案 1 :(得分:0)
没有 lookbehind :
pattern = /(?:^|[^a-zA-Z])#[a-zA-Z]+/
使用 lookbehind (但 Javascript 中不允许):
pattern = "(?:^|(?<![a-zA-Z]))#[a-zA-Z]+"