我不确定合适的正则表达式是什么:
String s = "[Don't remove] Don't remove [Remove | Don't remove]";
我想删除 [ 和 | 之间的所有内容但不是[和]。所以输出是:
"[Don't remove] Don't remove Don't remove]"
我尝试这样做,
s = s.replaceAll("\\[.*?\\|", "");
但我最终得到了这样的东西。
"Don't remove]"
现在我迷路了。我对正则表达式仍然很陌生,任何帮助将不胜感激。谢谢!
最佳答案
使用 ngated 字符类 [^\[|]*
不允许匹配任何其他 [
和|
之间[
和|
:
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]
查看regex demo和一个online Java demo .
详细信息
-
\\[
- 字面量[
-
[^\\[|]*
-一个negated character class匹配除[
之外的任何 0+ 个字符和|
-
\\|
- 字面量|
符号。
关于java - 正则表达式:如何删除由某些字符限制的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501722/