繁体   English   中英

用正则表达式解析HTML?

[英]Parsing HTML with Regular Expressions?

我一直在尝试使用正则表达式收集信息:

Pattern hp = Pattern.compile("<small>.....</small>"); 
            Matcher mp = hp.matcher(code);
            while (mp.find()) {
                    String grupoHORARIO = mp.group();        
            System.out.println(grupoHORARIO);         } 

当我运行程序时,没有显示给我看:

RESULT1
RESULT2
RESULT3

它显示了这一点:

<small>RESULT1</small>
<small>RESULT2</small>

如您所见,它显示了我要查找的单词前后的“小”标签的开头和结尾。 我需要的只是这个词,周围没有“小”标签。

使用正则表达式解析HTML是很糟糕的。

同样, 使用RegEx解析HTML是不好的。

话虽这么说...为了回答您的问题,问题在于您如何使用正则表达式。 您要更改的唯一代码是Pattern.compile()方法内部的代码。 当前的操作方式 (单击Java按钮以查看结果),只有在<small> ,5个字符,然后</small> ,您才匹配。 此匹配项包括开始和结束标签。

如果您只想匹配中间部分,则可以尝试使用RegEx lookaround 我这样做的方式是: (?<=<small>).*(?=</small>) 分为部分:

.* -任意数量的字符。

.*(?=</small>) -任意数量的字符后跟</small>

(?<=<small>).*(?=</small>) -任意数量的字符,其后跟<small></small>

如果您不想让它与任何字符匹配,则用您要查找的内容替换.* (例如, .....{5}.将匹配5个字符)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM