具有跨多行正前瞻性的正则表达式

Regex with positive lookahead across multiple lines

我一直在尝试在 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 在开始 [=14] 行中的多行块=]

所以在上面的例子中,第二个块将被突出显示,而不是第一个。

我不知道从哪里开始,有人可以帮忙吗? 谢谢,女士

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

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

我将解决方案更新为在标签 TO

中包含 412

希望这对您有所帮助

试试这个:

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

Demo

Updated answer as per op's updated question and comment :

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

Updated Link For Explanation and Demo