java - 在一个字符串中,我想用它的第三个方 block 字符串替换方括号内的所有单词

标签 java regex

我有一个像这样的字符串“案例 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 demoRegulex graph :

enter image description here

详情

  • \[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/

相关文章:

java - JPQL:查询多列时,什么样的对象包含结果列表?

java - 在Android中获取图像的点击区域

java - 创建使用 Maven 构建的项目的 jar?

java - swt Table Viewer java 键盘快捷键,用于在单元格之间编辑和移动

java - 除了 Java 文件的开头之外,是否可以在任何地方使用 import 语句?

javascript - 使用正则表达式将日期/时间字符串拆分为标记

javascript - 如何解析 key :value pair on JSON-like string with RegEx on JavaScript?

python - 未找到打印搜索的问题

javascript - 用正则表达式拆分字符串,在行首保留定界符

java - 正则表达式中的转义符 (