我有一个字符串和一个模式,我想在该字符串中搜索.现在,当我匹配字符串中的模式时,我想知道与我的模式匹配的字符串.
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>在给定的文本中它不应该是贪婪的.
您可以通过访问字符串的匹配部分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)
| 归档时间: |
|
| 查看次数: |
2923 次 |
| 最近记录: |