java - 在一个字符串中,我想用它的第三个方括号字符串替换方括号内的所有单词
问题描述
我有一个字符串" case 1 is good [phy][hu][get] my dog is [hy][iu][put] [phy][hu][gotcha]"
我希望结果字符串为" case 1 is good get my dog is [hy][iu][put] gotcha "
基本上,我希望将格式的所有子字符串[phy][.*][.*]
替换为最后一个(第三个)方括号的内容。
我尝试使用这个正则表达式模式"\[phy\]\.[^\]]*]\.\[(.*?(?=\]))]"
,但我想不出一种方法来解决我的问题,而不必遍历每个匹配的子字符串。
解决方案
您可以使用
\[phy\]\[[^\]\[]*\]\[([^\]\[]*)\]
细节
\[phy\]
-[phy]
子串\[
-[
字符[^\]\[]*
- 0 个或多个字符,而不是[
and]
\]
- 一个]
字符\[
-[
字符([^\]\[]*)
- 捕获$1
匹配零个或多个字符的组 1(是其在替换模式中的值[
)]
\]
- 一个]
字符
Java 使用演示
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
推荐阅读
- algorithm - 如何设计多目标A*star算法?
- java - 在 Android 的 web 视图上打开 PDF 文件
- ruby - 从 rake 任务中删除重复项
- c# - 为什么我的 webrequest 行需要更新?(错误(426)需要升级)
- node.js - npm install dtrace-provider 错误:未找到 make
- flutter - Is there a way to add rounded corners to a DropdownButton menu item list in Flutter?
- android - 无法将 java.lang.String 类型的对象转换为 com.thesis.joinerapp.Model.Joins 类型
- html - 背景图像未出现在 div 中
- ios - 何时重新创建 SwiftUI 中的工作表?
- linux - bash 中的三个左尖括号(`<<<`)是什么意思?