Java正则表达式

标签 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>并且在给定的文本中不应该是贪婪的。

最佳答案

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

更精细的方法是使用 capturing groups 。将要从匹配字符串中“提取”的部分放在括号内,然后通过例如 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));
}

关于Java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474755/

相关文章:

java - 如何将 Float(包装类)转换为 Integer 包装类?

regex - 关于问号 "lazy"模式的正则表达式

php - 将字符串转换为json

java - Path JobQueue 无法序列化 String HashSet

java - 使用 java 8 运行 java 1.2 (SSFnet) 开发的程序

html - HTML5 模式下 AngularJS 和 Laravel 4 路由冲突

jquery - CSS反向动画不起作用

regex - 来自终端的 Sed 正则表达式字符串替换

java - 在 Android +14 上实现 PPTP/L2TP 协议(protocol)

javascript - 根据单选按钮选择更改可选下拉选项的 JQuery 代码