提取与短语匹配的行

Hun*_*der 1 php regex

我想匹配整行,并在该行上匹配单词/短语!我尝试了这个:

preg_match("/PHRASE/i", $dictionary,$matches);
Run Code Online (Sandbox Code Playgroud)

但是我只得到匹配的单词!但我需要整条线!超过15K条线!

Tim*_*ker 5

只需使用

^.*PHRASE.*$
Run Code Online (Sandbox Code Playgroud)

^ 匹配行首

.* 匹配换行符以外的任意数量的字符

PHRASE 匹配您的关键字/短语

.* 如上

$ 匹配行尾。

您可能还想PHRASE用单词边界锚点包围(如果您的短语确实是一个单词或多个单词):^.*\bPHRASE\b.*$仅当单独存在时才匹配PHRASE(而不是另一个单词的一部分,例如PHRASEBOOK)。

因此,如果要将正则表达式分别应用于每行,请使用

preg_match('/^.*PHRASE.*$/i', $dictionary, $matches)
Run Code Online (Sandbox Code Playgroud)

如果您将所有行都包含在长的多行字符串中,并且想要遍历包含短语的所有行,请使用:

preg_match_all('/^.*PHRASE.*$/im', $dictionary, $matches, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($matches[0]); $i++) {
    # Matched text = $matches[0][$i];
}
Run Code Online (Sandbox Code Playgroud)

请注意,/m修饰符允许^$匹配每行的开始和结尾(而不仅仅是字符串的开始/结尾)。