@mr_creo

Как обьединить два регулярных выражения?

Имеем строку, надо узнать входят ли в нее оба шаблона, порядок вхождения не важен.
то есть заменить :
if ($str =~/$pattern1/g && $str =~/$pattern2/g)
на что-то подобное:
if ($str =~/$pattern1 && $pattern2/g)
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
vaut
@vaut
Раз уж оставил ответ соберу все из комментариев:

1) заглядывания, долго работают:
/^(?=.*$pattern1)(?=.*$pattern2)/s
2) полный перебор, не добавить 3 паттерн:
/(($pattern1).*($pattern2))|(($pattern2).*($pattern1))/

3) не работает если паттерн может встречаться более одного раза:
/($pattern1|$pattern2){2}/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы