【发布时间】:2017-03-15 12:26:22
【问题描述】:
我有一个包含大括号的字符串,我想用另一个字符 B 替换任何不包含在一对左括号和右括号中的字符 A。所以
ABCDACD{ACDA}ABCD
应该替换为
BBCDBCD{ACDA}BBCD
如何使用正则表达式(例如在 Perl 中)做到这一点?括号不是嵌套的,但也适用于嵌套情况的解决方案会更好。
编辑:更改措辞
【问题讨论】:
-
非嵌套:
A(?![^{}]*\})- 检查 A 之后的下一个括号(如果有)是否不是结束括号。现在让我寻找一个好的骗子。 -
“同样适用于嵌套案例的解决方案会更好” 为什么,如果您的数据没有嵌套大括号?非嵌套解决方案很简单,但嵌套大括号需要递归模式。
-
@NicolasMalebranche:请您澄清一下您的声明是否“我想用另一个字符B替换一个字符A,如果它不包含在一对左括号和右括号中。”实际上意味着“如果替换值B在大括号内,那么你不会在任何地方用B替换A”?
-
@NicolasMalebranche:
ABCDACD{ABCDA}ABCD输入字符串的预期结果是什么(请注意括号内的B)?应该是BBCDBCD{ABCDA}BBCD(括号外的所有As 被替换)还是ABCDACD{ABCDA}ABCD(原字符串不变)?