正则表达式以匹配单词,除非它们前面有字符

Regex to match words unless they have a character before them

本文关键字:前面 字符 单词 正则表达式      更新时间:2023-09-26

我有这个检测主题标签的正则表达式。它不应该匹配前面有字母的东西,所以我们在正则表达式的开头有一个空格字符:

/( #[a-zA-Z_]+)/gm

问题是它不再匹配句子开头的单词。我如何修改这个正则表达式,以便它根本不匹配前面带有字母的东西,而不是与空格匹配。

谢谢!

开头使用'b来表示单词边界。 'b行不通,因为#不是单词的开头。

只需检查字符串的开头前面的空格:(?:^|'s)('#[a-zA-Z_]+)

另外,请确保您转义#,这样它就不会被解释为评论。

没有回头:

 pattern = /(?:^|[^a-zA-Z])#[a-zA-Z]+/​​​​​​​​​​​​​​​​​​

使用回溯(但在 Javascript 中不允许):

 pattern = "(?:^|(?<![a-zA-Z]))#[a-zA-Z]+"