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?
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"