Java 正则表达式:如何删除由某些字符限定的子字符串?
我不确定什么是合适的正则表达式:Java 正则表达式:如何删除由某些字符限定的子字符串?,java,regex,Java,Regex,我不确定什么是合适的正则表达式: String s = "[Don't remove] Don't remove [Remove | Don't remove]"; 我希望删除[and |之间的所有内容,但不删除[and]。因此输出为: "[Don't remove] Don't remove Don't remove]" 我试着这么做 s = s.replaceAll("\\[.*?\\|", ""); 但我最终得到了这样的东西 "Don't remove]" 现在我不知所措。我对正则
String s = "[Don't remove] Don't remove [Remove | Don't remove]";
我希望删除[and |之间的所有内容,但不删除[and]。因此输出为:
"[Don't remove] Don't remove Don't remove]"
我试着这么做
s = s.replaceAll("\\[.*?\\|", "");
但我最终得到了这样的东西
"Don't remove]"
现在我不知所措。我对正则表达式还是新手,任何帮助都将不胜感激。谢谢!使用一个加字符类
[^\[|]*
,它将不允许在[
和
之间匹配任何其他[
和
:
String s = "[Don't remove] Don't remove [Remove | Don't remove]";
s = s.replaceAll("\\[[^\\[|]*\\|", "");
System.out.println(s); // => [Don't remove] Don't remove Don't remove]
见a和a
详细信息
-文字\\[
[
-匹配除[^\\\[|]*
和[
之外的任何0+字符的字符
-一种文字符号\\\\\\\