我在下面最好描述的正则表达式中遇到了一个小问题:

原始字符串为:

{reply_to={message_type=login}|login_id=pippo|user_description=pippo=pluto|version=2013.2.1|utc_offset=7200|login_date=2014-07-03|login_time=09:43:02|error=0}


这是我想要获得的:

{reply_to:{message_type:login}|login_id:pippo|user_description:pippo=pluto|version:2013.2.1|utc_offset:7200|login_date:2014-07-03|login_time:09:43:02|error:0}


碰巧的是,如果键的值中也有“ =”,我将无法替代它。

我尝试做的是匹配并替换一组字符:

re.sub(r'([\{\}\|])=([\{\}\|])',r'\1":"\2',modOutput)


实在是行不通!任何的想法 ?

最佳答案

这至少在给定的示例中有效:

re.sub(r'=([^{|}]*)', r':\1', s)


我们正在寻找一个=,然后捕获到下一个定界符({|}之一),以跳过后续的=符号。

09-25 21:47