Я хочу найти строку «W foo X bar Y baz Z» в тексте.
W, X, Y, Z - неважные разделители, и я не должен их искать.
foo, bar и baz - это слова, которые меня интересуют. Порядок не так важен.
Я хочу знать, насколько «хорошо» мои обязательные слова встречаются в тексте.
Я пытаюсь следующее
(?:\Qfoo\E)?.{0,3}(?:\Qbar\E)?.{0,3}(?:\Qbaz\E)?
Мои рассуждения таковы:
- упакуйте каждое слово в необязательную группу, чтобы оно не появлялось
[(?: это группа без захвата, \ Q ... \ E просто сбегает]
- отделяйте каждое слово с помощью. {0,3} (любой символ, встречающийся 0-3 раза)
Это регулярное выражение всегда совпадает, поскольку оно состоит только из необязательных групп, но полученное совпадение всегда пусто , даже если оно может полностью соответствовать всем необязательным группам.
Тем не менее, я хочу постобработать полученное совпадение, поэтому мне нужно, чтобы оно получило как можно больше.
Могу ли я заставить Regex попытаться сопоставить все группы, насколько это возможно?
Или у вас есть идея, как выполнить поиск нескольких слов, разделенных чем-то, а затем проверить, какие слова встречаются, чтобы вычислить некоторое сходство?
Большое спасибо