Comandante
Новичок
Регулярные выражения: поиск всех слов в тексте
Приветствую,
есть текст 100-1000 байт, состоящий из ~20-100 строк.
Задача - найти строку(и) в тексте, содержащие несколько заданных слов.
К примеру текст
--------
aaa bbb ccc
ddd eee ffff
bbb aaa ddd
--------
1. требуется найти строки, содержащие "aaa" и "bbb" (количество слов может меняться, от 1 и больше).
Сейчас это делается циклом. Перебираются все строки и по очереди проверяются на наличие обоих слов. Думаю что можно ускорить процесс за счет использования регулярных выражений, но пока ничего не придумывается.
Если бы нужно было найти фразу с любым словом, то сделал бы так:
preg_match_all("![^\n]*(aaa|bbb)[^\n]*!mis",$text,$tmp);
но как составить выражение, чтобы находились строки, содержащие оба слова? Возможно ли это сделать одним выражением?
Приветствую,
есть текст 100-1000 байт, состоящий из ~20-100 строк.
Задача - найти строку(и) в тексте, содержащие несколько заданных слов.
К примеру текст
--------
aaa bbb ccc
ddd eee ffff
bbb aaa ddd
--------
1. требуется найти строки, содержащие "aaa" и "bbb" (количество слов может меняться, от 1 и больше).
Сейчас это делается циклом. Перебираются все строки и по очереди проверяются на наличие обоих слов. Думаю что можно ускорить процесс за счет использования регулярных выражений, но пока ничего не придумывается.
Если бы нужно было найти фразу с любым словом, то сделал бы так:
preg_match_all("![^\n]*(aaa|bbb)[^\n]*!mis",$text,$tmp);
но как составить выражение, чтобы находились строки, содержащие оба слова? Возможно ли это сделать одним выражением?