gpt4 book ai didi

javascript - 正则表达式多单词边界(精确单词)

转载 作者:行者123 更新时间:2023-12-01 01:18:58 53 4
gpt4 key购买 nike

我正在寻找一种方法来匹配正则表达式中输入的确切单词。

不幸的是,边界不起作用,因为搜索词可以有多个单词。

我想出了这个正则表达式 (?:^|[\\s])(<word>)(?:$|[\\s!?])它工作完美,直到有多个 <word>彼此之间。

示例:

正则表达式: (?:^|[\\s])(won)(?:$|[\\s!?])

文字:

We won won won

在这段文本中,它只会匹配每隔一个单词。我明白这是因为需要一个空格,但该空格已经包含在前一个单词中。

这方面还有更多困难。

它不应该匹配缩写,例如 won不应匹配 won't 。这也适用于连字符的单词 won-me .

为了简单起见,我做了单元测试来测试所有案例:

https://regex101.com/r/9Mj0UC/4/tests

注意:我无法在单元测试中测试它是否匹配每一个或每一个第二个。因此请简单看一下测试字符串面板。

有人可以为这个正则表达式的疯狂提供解决方案吗?

需要用Regex编写(并且兼容JS)

最佳答案

这种方式怎么样(没有lookbehind):

/(?:^|(?!['-])[^]\b)won(?!\B|['-])/i
  1. 行的开头或单词边界之前除 ' 或 - 之外的任何符号。
  2. 这个词。
  3. 先行断言不否定单词边界或 ' 或 -。 (这个不捕获空格,因此重复的单词会被捕获。)

关于javascript - 正则表达式多单词边界(精确单词),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54442184/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com