我想撰写一个正则表达式来突出显示关键字。
正则表达式有点像
\btap\b.
对于下面的句子,它预计只匹配一个“tap”而没有双引号。但实际上,它也匹配引号中的第二个“敲击”。
tap click "tap"
如何排除匹配的第二个分词?
答案 0 :(得分:0)
答案 1 :(得分:0)
单词边界\b
匹配任何非单词字符(因此"
也是如此)。
您可以模拟自己的单词边界,只包含您认为合适的内容。
例如:
\s|^|\.|!|\?|$
- 字符串,圆点,感叹号,问号或字符串结尾的空格或开头
我还建议使用负面的lookbehinds / -aheads但是......
Javascript不支持lookbehinds
因此,您可以使用一些捕获组,然后使用您需要的组。
示例正则表达式:(?:\s|^|\.|!|\?)(tap)(\s|$|\.|!|\?)
然后在javascript中使用第一个捕获组 - match[1]
。
有关如何在JavaScript中使用捕获组的详细信息,请参阅this SO answer。