Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式:如何删除由某些字符限定的子字符串?_Java_Regex - Fatal编程技术网

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+字符的字符
  • \\\\\\\
    -一种文字符号

非常感谢您!