正则表达式捕获太多或不够

时间:2014-03-13 15:47:09

标签: php regex

我在使用我的正则表达式匹配以下数据时遇到了一些麻烦。我希望在最后"-"之后捕获所有数据,直到空白行。我尝试了各种各样的修饰符和正则表达式,但我似乎无法将其与我想要的相匹配。我要么在第一行(第1行:......)或所有行中结束,包括我从中拉出的文档的其余部分。请帮忙吗?

数据:

Title\n
- ---------------\n
Line 1: Some random chars//:"'\n
Line 2: Some random chars//:'"\n
Line 3: Some random chars//':"\n
Line 4: Some random chars/'/:"\n
Line 5: Some random chars//:"'\n
Line 6: Some random chars//:'"\n
\n

正则表达式:

/Title[\s\-]+(?P<lines>.*)/i

2 个答案:

答案 0 :(得分:0)

在正则表达式的末尾查找两个连续的(\r\n\r\n)换行符:

preg_match_all("/Title[\s\-]+(?P<lines>.*)(?=\r\n\r\n)/msi", $input, $matches);

不确定linux中的情况,可能是\n\n

答案 1 :(得分:0)

  

我希望捕获最后一个&#34; - &#34;之后的所有数据。直到空白行。

您可以在&#34; - &#34;之后查找每个字符。和这样的白色空间:

/\-\s+(.*)\s/s

...直到另一个最后的空白区域。

选项: s = Dot匹配所有(http://php.net/manual/en/reference.pcre.pattern.modifiers.php

希望这就是你要找的东西。