douzhan1031 2017-04-28 01:14
浏览 9
已采纳

regex挑战,将不同的规则仅分为两组

I have the following data:

msg=hello  msg=hellohello age:  s35  { getAge } for  name=peter id="123"

I would like to use regex to classify them in the following group 1 (left of the colon) and group 2 (right of the colon) structure:

msg : hello  
msg : hello/hello 
age :   thirtyfive  { getAge } for  
name: peter'
id  : "123"

I come up with the following regular expression

([^,=\s]*)=([^,\s]*)|([^= ]*):  ([^=]*for)

This does the job except that I have an unfortunate constraint. I can only allow two regular expression groups. As you can see the "age" attribute and corresponding key are in group 3 and group 4, correspondingly.

How can I group them all in just two groups in regex?

  • 写回答

1条回答 默认 最新

  • dougan1205 2017-04-28 01:42
    关注

    which programing language are you using ?

    Because you didn't reply, I'll provide a regex for python and php:

    PYTHON:

    import re
    result = re.sub(r"([a-z]+)(?:=|:\s+)(\d+.*?for |[^ ]+)", "\\1: \\2
    ", original, 0, re.IGNORECASE | re.DOTALL | re.MULTILINE)
    

    PHP:

    $result = preg_replace('/([a-z]+)(?:=|:\s+)(\d+.*?for |[^ ]+)/sim', '\1: \2
    ', $original);
    

    Output:

    msg: hello
      msg: hellohello
     age: 35  { getAge } for 
     name: peter
     id: "123"
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?