【发布时间】:2017-08-30 15:53:39
【问题描述】:
我需要替换所有出现的子字符串,前提是它前面是“]”,后面是“[”(前面和后面,但不一定在子字符串旁边)。示例:
这将是我需要进行替换的字符串:
[style and tags info] valid text info [more style info] more info here[styles]
如果要替换的表达式是:info -> change(可能不止一个词)
结果应该是:
[style and tags info] valid text change [more style info] more change here [styles]
我的想法是使用正则表达式来隔离我必须更改的单词,然后通过调用 replaceAll 进行替换。
但我尝试了几种正则表达式来隔离搜索表达式,但均未成功。主要是因为我需要像
这样的东西(?<=.*)
这是在我要查找的单词之前使用任意数量的字符进行回溯。 Java 正则表达式不支持这一点(我知道的任何其他正则表达式实现也不支持)。
我找到了这个解决方案,用 matlab 编写,但在 Java 中似乎更难复制:
Matlab regex - replace substring ONLY within angled brackets
有没有更简单的方法?一些我没有考虑过的正则表达式?
【问题讨论】:
-
为什么不只在
[...]之外替换change?我的意思是,如果info在第一个[...]之前,它不应该也被替换吗?
标签: java regex string substring