我正在尝试将正则表达式写入具有以下格式的字符串
12740(34,12) [abc (a1b2c3) (a2b3c4)......] myId123
目前,我有这样的事情
\((?P<expression>\S+)\)
但是有了这个,我只能捕获方括号内的字符串。
无论如何我可以在方括号之前捕获整数,并在最后捕获 id 以及方括号内的字符串。
小括号内的字符串数量不会相同。我也可以有一个看起来像这样的字符串
10(3,2) [abc (a1b2c3)] myId1
我知道我可以使用蛮力为上述表达式编写一个简单的正则表达式。但是当方括号内的字符串数量不断变化时,谁能帮我写一个。
提前致谢
您可以使用^
and捕获信息$
,分别表示开始和结束:
((?P<front>^\d+)|\((?P<expression>\S+)\)|(?P<id>[a-zA-Z0-9]+)$)
正则表达式 101:
https://regex101.com/r/PoA5k4/1
为了使结果更有用,我将它变成了字典:
import re
myStr = "12740(34,12) [abc (a1b2c3) (a2b3c4)......] myId123"
di = {}
for find in re.findall("((?P<front>^\d+)|\((?P<expression>\S+)\)|(?P<id>[a-zA-Z0-9]+)$)",myStr):
if find[1] != "":
di["starter"] = find[1]
elif find[3] != "":
di["id"] = find[3]
else:
di.setdefault("expression",[]).append(find[2])
print(di)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句