Java 删除两个字符之间的字符串
我有这根绳子 我需要删除[^和]之间的字符串 得到Java 删除两个字符之间的字符串,java,regex,string,Java,Regex,String,我有这根绳子 我需要删除[^和]之间的字符串 得到 test this a lorem epsum lorem epsum lorem epsum 我用JAVA试过这个正则表达式 str = str.replaceAll("[^.*?]", ""); 但它不起作用 你有什么想法吗 最好的祝愿发生这种情况是因为您没有转义这些字符:[]^,因此它们在正则表达式中被视为特殊字符。基本上,现在它正在替换任何不是、*或?的字符,只剩下两个句点。只需在它们之前添加\\,就可以摆脱它们,这样它就可以像您
test this a
lorem epsum
lorem epsum
lorem epsum
我用JAVA试过这个正则表达式
str = str.replaceAll("[^.*?]", "");
但它不起作用
你有什么想法吗
最好的祝愿发生这种情况是因为您没有转义这些字符:
[]^
,因此它们在正则表达式中被视为特殊字符。基本上,现在它正在替换任何不是
、*
或?
的字符,只剩下两个句点。只需在它们之前添加\\
,就可以摆脱它们,这样它就可以像您所希望的那样工作
str = str.replaceAll("\\[\\^.*?\\]", "");
你的正则表达式不正确 使用类似
String str = "test this a [^architecture.jpg]" + "lorem epsum" + "lorem epsum" + "[^rct.png]" + "lorem epsum";
String foo = "(?s)\\[\\^.+?\\]";
System.out.println(str.replaceAll(foo, ""));
输出为:
测试这一点
只需添加\\,字符串将如下所示
str = str.replaceAll("\\[\\^.*?\\]", "");
^
、[
和]
是需要首先转义的特殊字符,这就是它不起作用的原因,可以通过在每个特殊字符前面加\
来完成
如果要删除[^
和]
之间的所有内容,可以使用\[\\\^[^]*\\]
作为定义字符序列的正则表达式:
[^
开始0
或除]
以外的任何字符序列]
:str = str.replaceAll("\\[\\^[^]]*\\]", "");
[
,]
和^
是,你需要摆脱它们。谢谢你们,你们真了不起谢谢你们,你们真了不起
str = str.replaceAll("\\[\\^[^]]*\\]", "");