Java正则表达式

jav*_*eek 2 html java 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);
Run Code Online (Sandbox Code Playgroud)

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

即我希望得到<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>在给定的文本中它不应该是贪婪的.

aio*_*obe 6

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

更精细的方法是使用捕获组.将您想要的部分从匹配的字符串中"提取"放在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));
}
Run Code Online (Sandbox Code Playgroud)