This topic created in 2876 days ago, the information mentioned may be changed or developed.
string "[123]...(abc)"
需要将“ 123 ”提取到 key1,"abc"提取到 key2,(?<key1>)方式
问题是
[] 和 () 出现的顺序不确定,也可能是
string "(abc)...[123]"
能否一条正则搞定?
Supplement 1 · Jul 13, 2018
脑子秀逗了,忘了 findall 一个很重要的设定:
findall 的输出是按 pattern 中分组的顺序,而不是 string 中匹配出现的顺序
m=re.findall(r"(\{([a-z]+)\})|(\[([0-9]+)\])|(\(([a-z]+)\))", "(ace).[92387492].{abc}")
m
Out[24]:
[('', '', '', '', '(ace)', 'ace'),
('', '', '[92387492]', '92387492', '', ''),
('{abc}', 'abc', '', '', '', '')]
按照结果每个 tuple 的 index 读取就可以了
7 replies • 2018-07-17 12:46:33 +08:00
 |
|
1
wizardoz Jul 13, 2018 1
"\[(?P<key1>[0-9]+)\].+\((?P<key2>[a-z]+)\)"
|
 |
|
3
zynlp Jul 13, 2018 via iPhone 1
会不会有嵌套的情况呢?
|
 |
|
4
rocketman13 Jul 15, 2018
正则我要提取或者替换的的文本中既有双引号也有单引号,那我概括选中这段文本时是不是要用三引号??
|
 |
|
7
frostming Jul 17, 2018
(?=.*?(\[.+?\]))(?=.*?(\(.+?\))).+?
|