gpt4 book ai didi

Java 正则表达式应该匹配子字符串,但不构成结果的一部分

转载 作者:行者123 更新时间:2023-12-01 22:43:06 26 4
gpt4 key购买 nike

我无法编写一个正则表达式来匹配任何子字符串,但不使其成为结果的一部分。

例如:

3/4 length sleeve
3/4 length sleeves
3/4th length sleeve
3/4 sleeve
3/4 sleeves
3/4th sleeve
3/4th sleeves

对于上述所有字符串,它应该匹配,但最终在结果中返回“3/4袖子”。

我尝试使用前瞻,但在阅读 http://www.regular-expressions.info/lookaround.html 后我开始知道为什么它不起作用。

最佳答案

您无法按照您尝试的方式使用正向先行,而是可以放置 capturing groups围绕您想要匹配的内容,然后将匹配组连接在一起以获得匹配结果。

String s  = "3/4 length sleeve\n" +
"3/4 length sleeves\n" +
"3/4th length sleeve\n" +
"3/4 sleeve\n" +
"3/4 sleeves\n"+
"3/4th sleeve\n" +
"3/4th sleeves\n" +
"long sleeves\n" +
"longfoobarsleeve" +
"shortnjjgfjghfdjghsleeves\n" +
"shorts sleeveeees\n" +
"short sleeve";

Pattern p = Pattern.compile("(3/4|long|short).*?(sleeve)");
Matcher m = p.matcher(s);

while (m.find()) {
System.out.println(m.group(1) + " " + m.group(2));
}

输出

3/4 sleeve
3/4 sleeve
3/4 sleeve
3/4 sleeve
3/4 sleeve
3/4 sleeve
3/4 sleeve
long sleeve
long sleeve
short sleeve
short sleeve
short sleeve

关于Java 正则表达式应该匹配子字符串,但不构成结果的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com