【发布时间】:2013-11-12 20:30:59
【问题描述】:
我正在尝试编写一个正则表达式来查找字符串中的整个单词(匹配用户的搜索查询),但我想在达到某个单词后忽略所有内容。
想象以下可能的搜索结果列表:
- Foo(见 Foo 栏)
- 酒吧(见 Foo 酒吧)
- 美食吧
我想使用正则表达式来测试列表中的每个项目,并且我想忽略“看到”一词之后的所有内容。例如:
- 如果用户搜索“foo”,我想匹配第一项和第三项:
- Foo(参见 Foo 栏)
- 酒吧(见 Foo 酒吧)
- Foo酒吧
- 如果用户搜索“bar”,我想匹配第二项和第三项:
- Foo(见 Foo 栏)
- 酒吧(见Foo Bar)
- Foo 酒吧
我想出的正则表达式是这样的:
^(?!\(see)(\b%SEARCH%)
...%SEARCH% 被替换为搜索词。
不幸的是,这似乎并不适用于所有情况。如果搜索词在字符串的开头(即“foo”),它似乎正确匹配项目,但如果搜索词出现在字符串的后面(即,列表中的第三个项目中的“bar”) .
这是jsfiddle that illustrates the problem。在第一个和第三个示例中,一切都按预期工作,但在第二个示例中,第三个项目(“Foo Bar”)也应该匹配,但事实并非如此。
我做错了什么?
注意事项:
- 我只想匹配整个单词,因此
\b - 我还使用
i修饰符(不区分大小写)和g修饰符(查找所有匹配项)。
【问题讨论】:
标签: regex