【发布时间】:2019-01-30 13:53:27
【问题描述】:
我正在寻找一种方法来匹配在正则表达式中输入的确切单词。
很遗憾,边界不起作用,因为搜索词可以包含多个单词。
我想出了这个正则表达式 (?:^|[\\s])(<word>)(?:$|[\\s!?]),它可以完美运行,直到有多个 <word>s 一个接一个。
示例:
正则表达式: (?:^|[\\s])(won)(?:$|[\\s!?])
文字:
We won won won
在此文本中,它只会匹配每个第二个单词。我明白这是因为需要一个空格,但该空格已包含在前一个单词中。
这有更多的困难。
它不应匹配缩写,例如 won 不应匹配 won't。这也适用于连字符won-me。
为了简单起见,我进行了单元测试来测试所有案例:
https://regex101.com/r/9Mj0UC/4/tests
注意:我不能在单元测试中测试它是否匹配每一个或每一个。因此请简单地看一下测试字符串面板。
有人可以为这种疯狂的正则表达式提供解决方案吗?
需要用 Regex 编写(并且兼容 JS)
【问题讨论】:
-
你有正面/负面例子列表吗?
-
你想在
We won won won中匹配什么? -
我想匹配每个
won,而不仅仅是We< won >won< won>。因为用我的正则表达式它不会匹配中间那个。
标签: javascript regex