首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只匹配“<span></span>内聚体”,而不匹配“<span></span></span>”

只匹配“<span></span>内聚体”,而不匹配“<span></span></span>”
EN

Stack Overflow用户
提问于 2014-06-10 13:54:59
回答 3查看 135关注 0票数 2

我有一个模式来匹配类似的

代码语言:javascript
复制
...
<span class="count">1036</span>
...

但我不想和

代码语言:javascript
复制
<span class="count">1036</span></span>

因为它会抓住

代码语言:javascript
复制
1036</span>

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

我试过了\n在跨度的尽头,但它不起作用.下面是模式:

代码语言:javascript
复制
private static final Pattern COUNT = Pattern.compile("<span class=\"count\">(.+?)</span> ");

谢谢你的回答

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-10 14:10:37

尝试使用包含在括号()中的regex的分组特性,并使用Matcher#group(1)获取它。

Regex模式

代码语言:javascript
复制
<span class="count">([^<]*?)</span>

演示

样本代码:

代码语言:javascript
复制
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));
}

产出:

代码语言:javascript
复制
1036
票数 1
EN

Stack Overflow用户

发布于 2014-06-10 13:58:45

“行尾”的regex代码是$

尝试:

代码语言:javascript
复制
private static final Pattern COUNT = Pattern.compile("<span class=\"count\">(.+?)</span>$ ");
票数 0
EN

Stack Overflow用户

发布于 2014-06-10 14:02:21

使用多行开关(?m),使^和$匹配开始/结束行.

代码语言:javascript
复制
Pattern COUNT = Pattern.compile("(?m)<span class=\"count\">(.+?)</span>$");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24142890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档