可能重复:
PHP REGEX preg_math_all every line after a particular line
我想要一个匹配特定行之后每一行的模式 - 我可以依赖的唯一常量是如果标题在那里我知道我想要跟随行。如果我最终获得的线条数量超出了我的要求并不重要,因为我只会选择第一条线,而不是我需要的线条。
SURGICAL/MEDICAL HISTORY <--Header to indicate the beginning of my list
HISTORY 1 <--line1 to be matched
HISTORY 2 <--line2 to be matched
HISTORY 3 <--line3 to be matched
.
.
我没有发布文本的真实样本,因为它无关紧要 - 模式必须灵活,并且出于其他特殊原因。我总是在正则表达式中出现这样的问题。这就是我所拥有的:
$ptn = "/SURGICAL\/MEDICAL HISTORY\s*(^(.+)$)+/m";
但这只匹配第一行。谢谢!
编辑:我需要在数组中分隔所有匹配的行:
Array
(
[0] => Array
(
[0] => SURGICAL/MEDICAL HISTORY
HISTORY 1
HISTORY 2
)
[1] => Array
(
[0] => HISTORY 1
[1] => HISTORY 2
)
)
答案 0 :(得分:2)
这可能很有用:Pattern Modifiers
s(PCRE_DOTALL)
如果设置了此修改器,则为点 模式中的元字符匹配 所有字符,包括换行符。 没有它,排除了换行符。 这个修饰符相当于Perl / s修饰符。一个负面的类,如 [^ a]始终匹配换行符 字符,与设置无关 这个修饰语。
你的最终正则表达式应如下所示(未经测试):
$ptn = "/SURGICAL\/MEDICAL HISTORY\s*$(.*)/ms";