正则表达式挑战将不同的规则分为两组

时间:2017-04-28 01:14:03

标签: regex go

我有以下数据:

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

我想使用正则表达式在以下第1组(冒号左侧)和第2组(冒号右侧)结构中对它们进行分类:

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

我想出了以下正则表达式

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

除了我有一个不幸的约束外,这个工作做得很好。我只能允许两个正则表达式组。你可以看到"年龄"属性和对应的密钥相应地在组3和组4中。

如何在正则表达式中将它们分组为两组?

1 个答案:

答案 0 :(得分:0)

  你正在使用哪种编程语言?

由于您没有回复,我会为pythonphp提供正则表达式:

<强> PYTHON

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

<强> PHP

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

输出:

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