同样,python中的正则表达式匹配

2024-04-19 00:05:03 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,总的标题。我正在寻找一个pythonre表达式来匹配以下正则表达式:

stringOfAlphaNumeric1 ( stringOfAnyCharacter1 , stringOfAnyCharacter2 , stringOfAnyCharacter3 )

这个表达式可以重复多次,用空格隔开。例如:

stringOfAlphaNumeric1 ( stringOfAnyCharacter1 , stringOfAnyCharacter2 , stringOfAnyCharacter3 ) stringOfAlphaNumeric2 ( stringOfAnyCharacter4 , stringOfAnyCharacter5 , stringOfAnyCharacter6 )

如何获得以下配对:

stringOfAlphaNumeric1 -> stringOfAnyCharacter1
stringOfAlphaNumeric1 -> stringOfAnyCharacter2
stringOfAlphaNumeric1 -> stringOfAnyCharacter3
stringOfAlphaNumeric2 -> stringOfAnyCharacter4
stringOfAlphaNumeric2 -> stringOfAnyCharacter5
stringOfAlphaNumeric2 -> stringOfAnyCharacter6

Tags: 标题表达式空格pythonrestringofanycharacter1stringofanycharacter3stringofanycharacter5stringofanycharacter4
1条回答
网友
1楼 · 发布于 2024-04-19 00:05:03
import re

#if its fixed:  [  Key ( Value1 , Value2 , Value3 )  ]
regex = re.compile(r'([A-Za-z0-9]+) \( (.+?) , (.+?) , (.+?) \)')
s = "stringOfAlphaNumeric1 ( stringOfAnyCharacter1 , stringOfAnyCharacter2 , stringOfAnyCharacter3 ) stringOfAlphaNumeric2 ( stringOfAnyCharacter4 , stringOfAnyCharacter5 , stringOfAnyCharacter6 )"

d = dict((i[0], i[1:]) for i in regex.findall(s))

d是:

{'stringOfAlphaNumeric2': ('stringOfAnyCharacter4', 'stringOfAnyCharacter5', 'stringOfAnyCharacter6'), 
'stringOfAlphaNumeric1': ('stringOfAnyCharacter1', 'stringOfAnyCharacter2', 'stringOfAnyCharacter3')}

要获得配对:

[(k, i) for k, v in d.items() for i in v]

收益率:

[('stringOfAlphaNumeric2', 'stringOfAnyCharacter4'), 
('stringOfAlphaNumeric2', 'stringOfAnyCharacter5'), 
('stringOfAlphaNumeric2', 'stringOfAnyCharacter6'), 
('stringOfAlphaNumeric1', 'stringOfAnyCharacter1'), 
('stringOfAlphaNumeric1', 'stringOfAnyCharacter2'), 
('stringOfAlphaNumeric1', 'stringOfAnyCharacter3')]

相关问题 更多 >