栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么此正则表达式中的后向表达式没有“明显的最大长度”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么此正则表达式中的后向表达式没有“明显的最大长度”?

[只是一个字符,因此无论第一个表达式中后向组的明显最大长度是多少,似乎最大长度应该是1 +。是什么赋予了?

关键是, “无论第一个表达式中后向组的明显最大长度是多少” ,这 都不是
显而易见的。拳头的规则是,你不能使用

+
或者
*
一个向后看的内部。这不仅对于Java的正则表达式引擎如此,而且对于更多PCRE风格的引擎(甚至Perl的(v5.10)引擎!)也是如此。

您可以提前进行以下操作:

Pattern p = Pattern.compile("(?=(\[[a-z]+]))");Matcher m = p.matcher("] [abc] [123] abc]");while(m.find()) {  System.out.println("Found a ']' before index: " + m.end(1));}

(即,可以使用前瞻(!)内的捕获组来获取

end(...)
该组中的捕获组)

将打印:

在索引前找到一个“]”:7

编辑

而且,如果您有兴趣替换此类

]
,可以执行以下操作:

String s = "] [abc] [123] abc] [foo] bar]";System.out.println(s);System.out.println(s.replaceAll("(\[[a-z]+)]", "$1_"));

它将打印:

] [abc] [123] abc] [foo]条]] [abc_ [123] abc] [foo_ bar]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号