我正在寻找一个正则表达式来运行几个字符串并在其中匹配这些单词:
Maces Armour Evasion Shields
排除包含这些字词的字符串:
Swords Axes Staves
例如(这两行是一个字符串):
12% Increased Physical Damage with Maces
8% Increased Armour
应该是一个匹配,但这个不应该是(这两行也是一个字符串,但它包含禁用词“剑”,需要的单词“evasion”):
10% Increased Evasion
8% Increased Attack Speed with Swords
如何排除该列表?
答案 0 :(得分:4)
您可以对所需的单词使用前瞻,对禁止的单词使用负前瞻(如果您的正则表达式引擎允许这两个功能):
(?s)(?=.*\b(?:Maces|Armour|Evasion|Shields)\b)(?!.*\b(?:Swords|Axes|Staves)\b)^.+$
答案 1 :(得分:3)
您可以使用singleline
正则表达式:
/^(?=.*(?>Maces|Armour|Evasion|Shields))(?!.*(?>Swords|Axes|Staves)).+$/s
(?=.*(?>Maces|Armour|Evasion|Shields))
断言其中一个字出现在字符串 [无回溯] (?!.*(?>Swords|Axes|Staves))
断言字符串 [无回溯] 这是regex demo!