正则表达式在多行中具有正向前瞻性

时间:2017-01-10 03:51:46

标签: regex macos pcre regex-lookarounds textwrangler

我一直在尝试在TextWrangler中隔离包含某个字符串的块。

以下是我正在使用的示例。

<ROW num="381">
  <TO>8549672167</TO>
  <FROM>8936742582</FROM>
  <TIME>5/10/2009 19:49:3</TIME>
  <TEXT>Blah Blah Blah</TEXT>
</ROW>
<ROW num="382">
  <TO>8549672167</TO>
  <FROM>8591903412</FROM>
  <TIME>5/10/2009 19:49:37</TIME>
  <TEXT>Hme</TEXT>
</ROW>

我要做的是隔离所有多行块,以<ROW开头,以</ROW>结尾,其中包含412行开头的数字<FROM>

因此在上面的示例中,第二个块将突出显示,但不会突出显示第一个。

我不知道从哪里开始是,有人可以帮忙吗? 谢谢,MS。

2 个答案:

答案 0 :(得分:2)

试试这个:

<ROW[^<]*?>[^<]*<TO>(?=[^<]*412)[^<]*<\/TO>.*?<\/ROW>

Demo

enter image description here

  

根据运营商更新的问题和评论更新了答案:

<ROW(?=((?!ROW).)*<FROM>\d*412\d*<\/FROM>).*?<\/ROW>

Updated Link For Explanation and Demo

答案 1 :(得分:-1)

<ROW.*>[\s\n]*<TO>.*412.*<\/TO>[\w\d\s\n<>\/:]*<\/ROW>

url:http://regexr.com/3f1e7

我更新解决方案以在标签TO中包含412

希望这会有所帮助