java - 正则表达式:如何删除由某些字符限制的子字符串?

标签 java regex

我不确定合适的正则表达式是什么:

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/

相关文章:

python - 用于匹配 Python 列表中特定模式的正则表达式

java - 使用 JUnit 3.x 与 JUnit 4.x 运行测试仍然是最佳实践吗?

java - Java中的hessian,如何控制实例化?

java - 在Windows机器上使用java代码将本地文件复制到Unix服务器?

正则表达式范围运算符

python - Key=Val 使用正则表达式匹配

java - Eclipse 与 OSGi 框架?

java - 热点何时可以在堆栈上分配对象?

html - 什么时候在 HTML 中使用正则表达式是明智的?

regex - 带有命名组的替换字符串中的 Powershell 变量