正则表达式在匹配之间提取文本块

时间:2010-06-23 16:13:14

标签: php regex

好吧,所以这是我的问题。我正在尝试用PHP编写一个脚本来解析我们的工作订单系统并返回一组票证,但是我试图解析票证列表时遇到了一些麻烦。我一直试图尽可能地使用正则表达式来强迫自己学习语法,我可以知道这应该有用但是唉,它不是,所以我来这里寻求你的集体智慧。

<tr>
   ...
   ...
   ...
   ...
</tr>

我正在尝试在这里检索标签之间的块,以便我可以再次解析它以获取特定信息。块大小非常规则,但标记之间的行可能会根据故障单中描述的长度而有所不同。我目前使用的正则表达式是

/<tr>(.+)<\/tr>/

这似乎是实现我的目标的最小方法,但我从preg_match得到错误。我意识到我可以在这个非常粗略的伪代码中标记和循环它

if /<tr>/ then {
   while != /<\/tr>/ {
      store line
   }
}

然而,我的目标是更好地了解正则表达式以及如何使用它。

2 个答案:

答案 0 :(得分:2)

  • 也许你需要s (PCRE_DOTALL) modifier来匹配多行。
  • 也许您希望.*?代替.*,或者U(PCRE_UNGREEDY)修饰符匹配非贪婪。

答案 1 :(得分:1)

使用Simple HTML DOM

正则表达式解析html是一团糟。