仅匹配“<span>某事</span> endofline”而不是“<span>某事</span>”

时间:2014-06-10 13:55:00

标签: java regex

我有一个匹配类似

的模式
...
<span class="count">1036</span>
...

但我不想匹配

<span class="count">1036</span></span>

因为它会抓住

1036</span>

但无论如何我不想抓住双倍跨度,因为我不需要这些数据。 我需要跨度和行尾之间的数据。

我在跨度结束时尝试了\ n但它没有工作...... 这是模式:

private static final Pattern COUNT = Pattern.compile("<span class=\"count\">(.+?)</span> ");

感谢您的回答

3 个答案:

答案 0 :(得分:0)

“行尾”的正则表达式代码为$

尝试:

private static final Pattern COUNT = Pattern.compile("<span class=\"count\">(.+?)</span>$ ");

答案 1 :(得分:0)

使用多行开关(?m),这会使^和$匹配行的开头/结尾。

Pattern COUNT = Pattern.compile("(?m)<span class=\"count\">(.+?)</span>$");

答案 2 :(得分:0)

尝试使用括号内的正则表达式的分组功能()并使用Matcher#group(1)获取它。

正则表达式

<span class="count">([^<]*?)</span>

DEMO

示例代码:

Pattern pattern = Pattern.compile("<span class=\"count\">([^<]*?)</span>");
Matcher matcher = pattern.matcher("<span class=\"count\">1036</span></span>");
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出:

1036