1

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

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>

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

4

1 回答 1

0

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

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

话虽这么说...在回答您的问题时,问题是您如何使用正则表达式。我要更改的唯一代码是Pattern.compile()方法内部的内容。你目前的做法,(点击Java按钮查看结果),你只会匹配当有<small>,然后是5个字符,然后是</small>。此匹配包括开始和结束标记。

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

.*- 任意数量的字符。

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

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

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

于 2013-09-03T02:23:45.220 回答