我正在寻找一个Regex模式来验证我的HTML-Input是否具有正确的结构,并且(可能在第二步中)从中提取一些信息。
示例输入文字:
<title>Example Title</title><br />
<link>Download:</link> <a href="URL">hier</a> | hoster1 <br />
<link>Download:</link> <a href="URL">hier</a> | hoster2 <br />
<link>Download:</link> <a href="URL">hier</a> | hoster3
标题,主机和URL当然可以改变并且很有趣,所以我的尝试是这样的:
<title>([^<]+?)</title><br />\s<link>Download:</link> <a href="([^"]+?)">hier</a> \| ([^<]+?)<br />\s
这些群组可能看起来有点傻,但我也试过(。*?),即使是懒惰模式,他也会匹配整行。
现在第二部分(&lt; link&gt;部分)将匹配,但不会与&lt;标题&gt;一。我猜我的空白字符(\ s)与新行不匹配?如何仅查看换行符?
可用链接的数量是动态的,所以我不知道有多少&lt;链接&gt;标签有。如何将图案的后半部分用作可重复的图案?我喜欢做这样的事情(显然不会这样做):
[ <link>Download:</link> <a href="([^"]+?)">hier</a> \| ([^<]+?)<br />\s ]*
这一切都是通过MULTILINE选项设置完成的(尽管我不太确定它是否需要我想做的事情。)
我现在尝试了几天不同的事情并没有到达任何地方,我真的很感激指向正确的方向,谢谢。
答案 0 :(得分:2)
使用适当的HTML解析器(例如jsoup)进行此类任务;正则表达式适用于非常简单的情况,但很快就会变得笨拙。实现HTML解析器将更快,更容易,更正确,尤其是当您开始进行更高级的测试时。
答案 1 :(得分:0)
只需在需要为Windows使用新行字符的地方添加[^\r\n]
,否则请使用[^\n]
。