【发布时间】:2014-07-08 18:52:02
【问题描述】:
我有以下测试文件:
words
words
aa
word132 b word1 word2 ...
word131 c word1 word2 word3 word4 ...
bb
words
words
aa
word132 bi word1 word2 ...
word131 ci word1 word2 word3 word4 ...
bb
我想在每一列中查找 aa 和 bb 之间的单词。所以想要的结果是:
b
c
bi
ci
我已经设法做到了:
<?php
$pattern = '
words
words
aa
word132 b word1 word2 ...
word131 c word1 word2 word3 word4 ...
bb
words
words
aa
word132 bi word1 word2 ...
word131 ci word1 word2 word3 word4 ...
bb
';
$result = array();
preg_match_all('/aa\s*(.*)\s*bb/isU',$pattern,$matches);
foreach ($matches[1] as $match) {
preg_match_all('/(?:\s*)(?:\w+) (\w+) (?:.*)/i',$match, $submatches);
foreach ($submatches[1] as $submatch) {
echo $submatch."<br />";
}
}
但如果可能(并且有意义),我希望从我使用的这 2 个搜索模式中创建一个搜索模式。如果我对它们中的每一个都使用其他修饰符,该怎么办?
我在正则表达式方面没有丰富的经验,因此合并这两种模式是否合理,或者对于更复杂的操作,您应该在先前正则表达式的结果上运行正则表达式?
【问题讨论】:
标签: php regex preg-match pcre