正则表达式匹配单词数组,但排除缩略词中包含的单词

3
假设我有一个单词数组,例如:(hi|ll|this|that|etc),我想在以下文本中查找它:
“嗨”,我会匹配“这个”和“ll”。
我使用的是:\b(hi|ll|this|that|etc)\b
但我只想匹配整个单词,不包括缩写中发现的单词。基本上将撇号视为另一个“单词分隔符”。在这种情况下,它不应该匹配“I'll”中的“ll”。
有什么想法?

也许 (?:[^']|^)(hi|ll|this|that|etc)\bhttps://regex101.com/r/gD7aC0/1 - user4227915
2个回答

3

除了使用\b来开始和结束匹配外,还可以使用撇号:

(?:\b|')(hi|ll|this|that|etc)(?:\b|')

(?:...) 表示一个非捕获组。 在Regex101上查看


3
如果您只想匹配单词,可以尝试使用以下方法:
(?:^|(?=[^']).\b)(hi|ll|th(?:is|at)|etc)\b

演示

获取第一组单词。但是,\b 仍然允许匹配像 -this@ll 这样的片段。我不知道这是否是期望的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接