如何编写正则表达式以匹配由逗号分隔的一组离散的非重复单词。
非重复部分并不是那么重要。重要的是,我想匹配一组用逗号分隔的离散单词,并希望它尽可能短。此外,我无法使用多行模式,应该使用一种模式。
编辑:例如,我有一个单词列表food, exercise, rest, walk
。
然后该模式应该允许food,rest
和exercise, rest, walk
,但应该拒绝food, rest, rest
和walk, run
(第一个包含重复的单词,第二个包含run
不在我的列表。
答案 0 :(得分:0)
此正则表达式适用于javascript。
要找到这4个单词,而不重复双打:
(\b(?:food|walk|rest|exercise)\b)(?!.*\1)
例如:
鉴于字符串“食物,休息,休息,食物,奔跑”,它只能找到“休息”和“食物”。
\ b是字边界 这样它就可以获得“食物”的匹配,因为它在列表中。但不是来自“食物”。
\ 1是捕获组1的后向引用
由于否定前瞻(!
,如果字符串中的相同单词更进一步,那么它将不匹配
因此,对于重复的单词,它只匹配最后一个单词。
要查找不在列表中的单词,没有双打:
(\b(?!food|walk|rest|exercise)\w+\b)(?!.*\1)