我有一个像这样的字符串“案例 1 是好的 [phy][hu][get] 我的狗是 [hy][iu][put] [phy][hu][gotcha]”
我希望结果字符串为 "case 1 is good get my dog is [hy][iu][put] gotcha "
基本上,我希望将格式为 [phy][.*][.*]
的所有子字符串替换为最后一个(第三个)方括号的内容。
我尝试使用此正则表达式模式 "\[phy\]\.[^\]]*]\.\[(.*?(?=\]))]"
,但是我想不出一种方法来解决我的问题,而不必遍历每个匹配的子字符串。
最佳答案
你可以使用
\[phy\]\[[^\]\[]*\]\[([^\]\[]*)\]
并替换为 $1
。查看regex demo和 Regulex graph :
详情
\[phy\]
-[phy]
子串\[
-[
字符[^\]\[]*
- 除了[
和] 之外的 0 个或更多字符
\]
-]
字符\[
-[
字符([^\]\[]*)
- 捕获第 1 组($1
是它在替换模式中的值)匹配零个或多个字符[
和]
\]
-]
字符
Java 用法 demo
String input = "case 1 is good [phy][hu][get] my dog is [hy][iu][put] [phy][hu][gotcha]";
String result = input.replaceAll("\\[phy]\\[[^\\]\\[]*]\\[([^\\]\\[]*)]", "$1");
System.out.println(result);
// => case 1 is good get my dog is [hy][iu][put] gotcha
关于java - 在一个字符串中,我想用它的第三个方 block 字符串替换方括号内的所有单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55629075/