我的HTML是:
line1
line2
line3 59800 line4
line5
line6
我的目标是捕获:(25个左边的字符)59800(25个右字符):
我试过
/.{1,25}59800.{1,25}/igm
但我只捕获:
line3 59800 line4
如何捕捉多行?
以下是测试:http://regexr.com/39498
答案 0 :(得分:4)
取而代之的是m
在你的正则表达式中使用s
(DOTALL)标志:
/.{1,25}59800.{1,25}/s
s
修饰符用于使DOT匹配换行符,其中m
用于在多行输入的每一行中使锚点^ and $
匹配。
答案 1 :(得分:1)
添加到@anubhava's answer,这是正确的:
i
标记,因为正则表达式中没有提到的字母g
标志。(?s)
激活DOTALL
模式,允许点在线间匹配在PHP中,你可以这样做:
$regex = '~(?s).{1,25}59800.{1,25}~';
if (preg_match($regex, $yourstring, $m)) {
$thematch = $m[0];
}
else { // no match...
}