识别包含特定数据的大量信息

时间:2011-11-10 20:07:55

标签: regex

我正在使用此项目所需的应用程序,该应用程序必须使用正则表达式输入来预先过滤来自html / javascript的数据。

我看过文章谴责使用正则表达式过滤html;但是我必须在这种情况下。

我需要帮助的问题(似乎无法轻易解释)是找到data_1中包含的TAGS。

<TAG>
     .
     ..
     ...
     data_1
     ...
     ..
     .
</TAG>

我尝试了很多不同的方法,但我对正则表达式的整体体验有限。

示例1:

\<TAG.*\bdata_1\b.*?/TAG\>

不起作用,因为它实际上抓住了第一个通过/ TAG&gt;直到找到“data_1”然后在下一个/ TAG&gt;

结束

我知道我目前正走在正确的轨道上,但是我在2天前开始学习Regex并且还没到那里。

任何链接,评论和建议都将非常受欢迎。

修改

它仍然会选择所有前面的TAGS。

***BEGIN***
<TAG>
    ....
    .....
</TAG>
<TAG>
   ...
   data_1
   ...
</TAG>
***END***

应该是:

<TAG>
    ....
    .....
</TAG>
***BEGIN***
<TAG>
   ...
   data_1
   ...
</TAG>
***END***

2 个答案:

答案 0 :(得分:1)

这个正则表达式可能会起作用:

<TAG>(?!.*?</TAG>.*?data_1).*?data_1.*?</TAG>

您可以在此处查看结果:http://regexr.com?2v5qt

答案 1 :(得分:0)

您需要使所有通配符(.*)匹配非贪婪(.*?),并且您可能还需要“点匹配换行符”切换<?s>。我还清理了你的<TAG>文字

<?s>(<TAG>.*?\bdata_1\b.*?</TAG>)

你没有说你正在使用哪种语言,但是如果你抓住每场比赛的第1组,你就会有你的标签