gpt4 book ai didi

java - replaceAll 替换所有与提供的正则表达式不匹配的内容

转载 作者:行者123 更新时间:2023-12-03 23:14:29 24 4
gpt4 key购买 nike

string 类中的方法 replaceAll(String regex, String replacement) 将此字符串中与给定正则表达式匹配的每个子字符串替换为给定的替换。是否可以否定正则表达式以便替换所有不匹配的内容?

例如,我有一个在方括号内有一个子字符串的字符串(没有嵌套括号,字符串的其余部分既不包含左方括号也不包含右方括号)

String test = "some text [keep this] may be some more ..";

我找到了一个正则表达式来提取 [] 之间的子字符串:

String test = "some text [keep this] may be some more ..";        
Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher(test);

while(m.find()) {
test = m.group(1);
}

我想做的是,如果可能的话,使用 replaceAll 方法以某种方式否定正则表达式来替换与上述正则表达式不匹配的所有内容。

String regex = "\\[(.*?)\\]";
test.replaceAll("(?!" + regex + "$).*", "")

我通过搜索“否定正则表达式”找到的这个和其他一些对我不起作用。

预期输出是test = "keep this"

最佳答案

你很接近你可以使用replaceAll像这样,和这样的组;

test = test.replaceAll(".*\\[(.*?)\\].*", "$1");

关于java - replaceAll 替换所有与提供的正则表达式不匹配的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57857170/

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