我有一个输入字符串,我想替换特定关键字后第一个大括号(包括大括号)内的值。
例如,在本例中,我想替换Honda
后面的花括号内的值。
[{brand:”Toyota”, model:”Corolla”},
{brand:”BMW”, model:”X3”},
{brand:”Honda”, model:”{year:2022, name:Accord}”}]
因此,最终结果将类似于:
[{brand:”Toyota”, model:”Corolla”},
{brand:”BMW”, model:”X3”},
{brand:”Honda”, model:”Civic”}]
看起来像是在使用Java时,我可以使用replaceAll方法来利用正则表达式,但我无法确定此用例的正则表达式应该是什么。
我试图创建一个如下所示的正则表达式,但结果是错误的
第一次
1条答案
按热度按时间laik7k3q1#
Look-behinds是有问题的,因为(在Java中)它们必须是固定长度的。一个替代方法是捕获前缀(品牌),然后在替换字符串中重复
$1
。这个正则表达式将捕获商标。注意周围的括号。
这将匹配模型(不包括尾部引号):
将这两个部分连接起来。将它们放在字符串文字中,每隔
\
和"
进行转义:(可选)添加
\\s*
,使其能够抵抗任意空格:确保替换字符串以
$1
开头:工作示例:
输出量: