正则表达式模式与HTML标记匹配

时间:2011-09-06 21:31:17

标签: java android html regex

这仅适用于我正在搞乱的小型Android程序,所以我只需要匹配一个或两个标签

我有一个HTML标签,我可以在“FC-Cologne”标签内找到什么 我使用此代码来获取它

Pattern pattern = Pattern.compile("report\">(.*?)</a>",Pattern.MULTILINE);

这是我可以开始工作的HTML标签

  

&lt; a href =“/ match-menu / 3405570 / first-team / fc-cologne = report”&gt; FC Cologne&lt; / a&gt;

但是我不能得到这个标签,我不知道是因为“反对”一词之后的空格或/和HTML标签内的引​​号,因为它们不在第一个标签中

这是我无法工作的那个

  

&lt; td class =“bold opposition”&gt; “奥林匹亚科斯”&lt; / td&gt;

这是我正在尝试的代码

Pattern pattern = Pattern.compile("opposition \">(.*?)</td>",Pattern.MULTILINE);

我已经尝试用空格子代替空格“”,我已经尝试了空间但是我什么也没得到。

如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

除非你的其中一个中有一个拼写错误 - < /td><之后有一个空格而你的正则表达式</td>没有。

<导致匹配在RegexBuddy

成功后,为正则表达式添加空格

更新:似乎空间不在OP正在使用的标签中。

在RegexBuddy中我有模式(复制为Java字符串)

"opposition \">(.*?)</td>"

匹配html

< td class="bold opposition "> "Olympiacos"       </td>

匹配

opposition "> "Olympiacos"       </td>

的第1组
 "Olympiacos"       <--Line ends there.

答案 1 :(得分:0)

我相信这就是你要找的。

<(\w+)\s*(?:\w+(?:=(?:'(?:[^']|(?<=\\)')*'|"(?:[^"]|(?<=\\)")*"))?\s*)*>(.*?)</\1\s*>

您将需要使用第二组来获取标记的内容(第一组是标记名称)。请注意,这不会递归地工作。嵌套元素在第二组中捕获,因此您需要在其匹配的第二组上使用此正则表达式,直到没有匹配为止。