我想要在该字符串中搜索字符串和模式。现在,当我匹配字符串中的模式时,我想知道与我的模式匹配的字符串。
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>
的正则表达式,并且在给定的文本中不应该贪婪。
答案 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));
}