Java正则表达式

时间:2010-08-13 07:25:44

标签: java html regex

我想要在该字符串中搜索字符串和模式。现在,当我匹配字符串中的模式时,我想知道与我的模式匹配的字符串。

String template = "<P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"12\"> My Name is xyz </FONT></P>";

String pattern = "<FONT.*>";

Pattern.compile(pattern,Pattern.CASE_INSENSITIVE);

如何找到与模板中的模式匹配的字符串。

即我希望得到<FONT FACE=\"Verdana\" SIZE=\"12\">作为结果。 Java中的正则表达式库提供了哪些方法可以帮助我吗?

更新

什么是可以匹配<FONT FACE=\"Verdana\" SIZE=\"12\"> My Name is xyz </FONT><LI><FONT FACE=\"Verdana\" SIZE=\"12\"> My Name is xyz </FONT></LI>的正则表达式,并且在给定的文本中不应该贪婪。

1 个答案:

答案 0 :(得分:6)

您可以通过matcher.group()访问字符串的匹配部分。

更精细的方法是使用capturing groups。将您想要从“匹配”字符串中“提取”的部分放在parethesis中,然后通过例如matcher.group(1)获取匹配的部分。

在您的特定示例中,您需要为*使用不情愿的限定符。否则,.*将一直匹配到字符串的末尾(因为它以P>结尾)。

说明Matcher.group()Matcher.group(int)的使用:

String template = "<P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"12\"> My Name is xyz </FONT></P>";
String pattern = "<FONT (.*?)>";

Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(template);

if (m.find()) {
    // prints: <FONT FACE="Verdana" SIZE="12"> My Name is xyz </FONT></P>
    System.out.println(m.group());

    // prints: FACE="Verdana" SIZE="12"
    System.out.println(m.group(1));
}