我需要大量的日志数据才能从中获取相关信息。 语法是:
WORD1 some text KEYWORD some text WORD2 WORD1 some text KEYWORD some text WORD2 WORD1 some text KEYWORD some text WORD2 WORD1 some text KEYWORD some text WORD2
是否可以使用正则表达式从中获取某个块 - 这样当我查询某个关键字时,它将返回WORD1 some text THIS_KEYWORD some text WORD2
PS:一个关键字可能有多个实例,它应该返回所有块(preg_match_all,PREG_SET_ORDER?)。
答案 0 :(得分:1)
根据你的评论,每个区块总会有开始和结束的单词。
您可以执行以下操作:
WORD2
,之后是。{
WORD1
。
$arr = preg_split('/(?<=WORD2)\s+(?=WORD1)/',$log);
$keyword = 'KEYWORD1';
$result = preg_grep("/\b$keyword\b/",$arr);
答案 1 :(得分:0)
使用UNGREEDY修饰符
$found = preg_match_all("/WORD1.*KEYWORD.*WORD2/U",$x,$match);
if($found) print_r($match[0]);