【发布时间】:2018-10-26 08:19:02
【问题描述】:
我有一个代码可以从一大段字符串中找到与模式匹配的完整行。
$searchfor = 'some unicode words';
$pattern = preg_quote($searchfor, '/');
$pattern = "/^.*$pattern.*\$/m";
if(preg_match_all($pattern, $chunk, $matches)){
echo "Found matches:\n";
echo implode("\n", $matches[0]);
}
但是,我不想要与搜索词匹配的完整行。我需要那个词加上针前后的 10 个字符。请参阅以下示例以更好地理解。
来源句子:
这是我一生中见过的非常大的文本行,我喜欢它。
针:
我有
输出:
我见过的文本行
(前后各10个字符的针)
如何更改支持上述标准的模式。
TIA。
【问题讨论】:
-
试试正则表达式
(.{10}I have.{10}) -
您只需将捕获组添加到您的正则表达式。例如
"aaa(\d{4})bbb"只会匹配“aaa”和“bbb”之间的 4 位数字。
标签: php regex pattern-matching