Я ищу выражение регулярных выражений для выполнения нескольких строк и соответствия этим словам в них:
Maces Armour Evasion Shields
Исключая строки, содержащие эти слова:
Swords Axes Staves
Например (эти две строки - одна строка):
12% Increased Physical Damage with Maces
8% Increased Armour
должно быть совпадением, но этого не должно быть (эти две строки также являются одной строкой, но содержат запрещенное слово "мечи" с необходимым словом "уклонение"):
10% Increased Evasion
8% Increased Attack Speed with Swords
Как я могу исключить этот список?
Вы можете использовать lookahead для нужных слов и отрицательный взгляд на запрещенные слова (если ваш механизм регулярных выражений допускает эти две функции):
(?s)(?=.*\b(?:Maces|Armour|Evasion|Shields)\b)(?!.*\b(?:Swords|Axes|Staves)\b)^.+$
abcd|abc|defgh|def
. Тем не менее, ваш путь тоже работает хорошо.
Вы можете использовать singleline
регулярное выражение:
/^(?=.*(?>Maces|Armour|Evasion|Shields))(?!.*(?>Swords|Axes|Staves)).+$/s
(?=.*(?>Maces|Armour|Evasion|Shields))
Утверждает, что одно из этих слов присутствует в строке [no backtracking](?!.*(?>Swords|Axes|Staves))
утверждает, что ни одно из этих слов не присутствует в строке [no backtracking]Вот демо-версия regex !
10% Increased Evasion
не совпадает?