【问题标题】:Python - match all repetition of a char between groups of charsPython - 匹配字符组之间字符的所有重复
【发布时间】:2014-08-24 06:10:31
【问题描述】:

我对下面最好描述的正则表达式有一点问题:

原字符串为:

{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)

显然它不起作用!有什么想法吗?

【问题讨论】:

  • 您能否描述替换将做什么?很难比较这两个字符串并找出所有差异。
  • 为什么去掉版本前的|符号?
  • 对不起,我在代码中犯了一些错误。现在是我需要的。总而言之,我需要在 }{| 之间替换拳头“=”字符。字符。
  • 您的代码替换 {or}or| 后跟一个 = 符号,然后是 {or}or|与 {or}or|:{or}or|
  • @Avinash Raj exat 我需要做什么

标签: python regex char grouping substitution


【解决方案1】:

这至少适用于给定的示例:

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

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

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 2018-07-28
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多