gpt4 book ai didi

Java 拆分正则表达式非贪婪匹配不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:22 27 4
gpt4 key购买 nike

为什么非贪婪匹配对我不起作用?举个例子:

public String nonGreedy(){
String str2 = "abc|s:0:\"gef\";s:2:\"ced\"";
return str2.split(":.*?ced")[0];
}

在我看来,结果应该是:abc|s:0:\"gef\";s:2 但它是:abc|s

最佳答案

正则表达式中的 .*? 匹配除 \n 之外的任何字符(0 次或更多次,尽可能匹配最少的字符)。

你可以试试正则表达式:

:[^:]*?ced

另一方面,您应该使用常量模式来避免每次都重新编译表达式,例如:

private static final Pattern REGEX_PATTERN = 
Pattern.compile(":[^:]*?ced");

public static void main(String[] args) {
String input = "abc|s:0:\"gef\";s:2:\"ced\"";
System.out.println(java.util.Arrays.toString(
REGEX_PATTERN.split(input)
)); // prints "[abc|s:0:"gef";s:2, "]"
}

关于Java 拆分正则表达式非贪婪匹配不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281340/

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