【发布时间】:2018-06-08 17:40:05
【问题描述】:
如果有人可以帮助我解决 JAVA 正则表达式要求,我将不胜感激
我得到了一个类似"/ABC/KLM[XYZ/ABC/KLM]/ABC"的字符串
我想用方括号替换所有 ABC not。 在这种情况下,应该只找到第一个和最后一个 ABC。 但中间不是ABC,因为它是用方括号括起来的
【问题讨论】:
-
你需要关心嵌套括号吗?
-
会有随机的左括号或右括号,还是所有的左括号都有右括号
-
这是一个单独使用正则表达式处理的丑陋问题。您可能应该使用解析器。
-
最好取出
[...]中的字符串并在这些位置上放置一个标记。之后检查剩余的刺痛中的ABC并根据需要更换它。然后再次用我们首先删除的相应字符串替换标记。 -
创建一个堆栈。每次看到一个开括号
[时,将其推入堆栈。每次你看到一个右括号]从堆栈中弹出一个左括号。然后,仅在堆栈为空时替换ABC。