正则表达式匹配离散的非重复单词集

时间:2016-07-15 13:10:07

标签: regex

如何编写正则表达式以匹配由逗号分隔的一组离散的非重复单词。

非重复部分并不是那么重要。重要的是,我想匹配一组用逗号分隔的离散单词,并希望它尽可能短。此外,我无法使用多行模式,应该使用一种模式。

编辑:例如,我有一个单词列表food, exercise, rest, walk。 然后该模式应该允许food,restexercise, rest, walk,但应该拒绝food, rest, restwalk, run(第一个包含重复的单词,第二个包含run不在我的列表。

1 个答案:

答案 0 :(得分:0)

此正则表达式适用于javascript。

要找到这4个单词,而不重复双打:

(\b(?:food|walk|rest|exercise)\b)(?!.*\1)

例如:
鉴于字符串“食物,休息,休息,食物,奔跑”,它只能找到“休息”和“食物”。

\ b是字边界 这样它就可以获得“食物”的匹配,因为它在列表中。但不是来自“食物”。

\ 1是捕获组1的后向引用 由于否定前瞻(!,如果字符串中的相同单词更进一步,那么它将不匹配 因此,对于重复的单词,它只匹配最后一个单词。

正则表达式的反版本:

要查找不在列表中的单词,没有双打:

(\b(?!food|walk|rest|exercise)\w+\b)(?!.*\1)