У меня есть регулярное выражение, которое я использую для очистки имен учетных записей, и с новым годом я должен изменить его, чтобы зафиксировать новую версию имени учетной записи, которую использует другая команда. Однако мне трудно понять, почему просто добавить другую альтернативу не получается.
Вот что я использую:
^.*\b((?i)foxtrot movie|whiskey|whiskeyfoxtrotmovie)\b.*$
Это прекрасно работает для других версий имени учетной записи в данных, в первую очередь "Foxtrot Movie". Но теперь я хочу, чтобы он снял «Фильм о виски Фокстрот» и «Фильм Фокстрот».
Для пояснения, оба находятся в столбце, через который проходит это регулярное выражение. Я хочу, чтобы вся строка была захвачена при появлении любого из них. Я никогда не хочу, чтобы «Виски» не был захвачен, а «Виски Фокстрот Фильм» и «Фокстрот Фильм» - это разные строки среди множества других имен аккаунтов.
Я знаю, что Regex стремится, и поэтому, чтобы поощрить сравнение с большей строкой, сначала я скорректировал выражение в пределах границы, чтобы
\b((?i)whiskeyfoxtrotmovie|whiskey foxtrot movie|whiskey|foxtrot movie)\b
, но он захватывает только «Фокстрот Фильм» даже для более длинной строки. Я не могу понять, почему это не совпадает со второй альтернативой, чтобы захватить "Виски Фокстрот Фильм"
(whiskey)? foxtrot movie
приводит к той же ошибке.
Перемещение порядка, похоже, тоже не помогает. Включение каждой альтернативы в ()
также проваливает меня.
Я все еще новичок в этом, так что, может быть, есть что-то, чего я не понимаю в границах? Но это работает до тех пор, пока у меня в выражении одновременно нет whiskey foxtrot movie
и foxtrot movie
. Может пробелы?
Любое понимание приветствуется.