java - 正则表达式 java : how to replace a string in a generic between the start tag and end tag of a generic

标签 java regex tags

在java中,我有这样一个字符串:

"bla bla bla bla [BACK] bla bla bla [bla bla [GO] bla bla bla bla [bla" 

我想用正则表达式找到一条规则,将开始标记“[”替换为“(start)”,结束标记“]”替换为“(end)”。

应忽略“单独的开始标记或结束标记”。

结果是我会得到以下内容:

bla bla bla bla (start)BACK(end) bla bla bla [ bla bla (start)GO(end) bla bla bla bla [bla

最佳答案

String resultString = subjectString.replaceAll(
    "(?x)       # Turn on verbose mode                    \n" +
    "\\[        # Match a [                               \n" +
    "(          # Match and capture in group 1:           \n" +
    "[^\\[\\]]* # Any number of characters except brackets\n" +
    ")          # End of capturing group                  \n" +
    "\\]        # Match a ]", "(start)$1(end)");

将仅匹配/替换平衡的 [/] 对,它们之间没有括号。

关于java - 正则表达式 java : how to replace a string in a generic between the start tag and end tag of a generic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548191/

相关文章:

java - 设置 channel 适配器的属性

java - 为什么我在尝试编译 servlet 时会收到无效标志错误?

regex - 使用 Ansible 中的替换模块用正则表达式替换字符串

PHP - 从 url 获取标签

python - 有什么东西可以直接转换 xml -> yaml 吗?

简单方程的 Java 运算符优先级问题

java - 使用 Jackson 将 JSON 反序列化为包含集合的 Java 对象

java - 男性和女性字符串的正则表达式是什么

javascript - 查找字符串中的多个子字符串

javascript - 如何在插入 jQuery 后更新/刷新 DOM 项