regexjava:如何在泛型的开始标记和结束标记之间替换泛型中的字符串
在java中,我有这样一个字符串:regexjava:如何在泛型的开始标记和结束标记之间替换泛型中的字符串,java,regex,tags,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 b
"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
将只匹配/替换平衡的
[
/]
对,但它们之间没有括号。在您的示例中,为什么忽略第一个括号?不管怎样,这就是正则表达式
js:'bla bla bla bla bla[BACK]bla bla bla[bla bla bla[GO]bla bla bla bla bla bla[bla]。替换(新的RegExp(/\[([^\[\]+?)\]/g),'(开始)1美元(结束)
结果:
“bla-bla-bla-bla(开始)BACK(结束)bla-bla-bla[bla-bla(开始)GO(结束)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)");