string str = "('k1'='v1';'k2'='v2';123;'k3'='v3')";
我的正则表达式 : (^()([^;]+;)*([^)]+)()$)
我的结果是 :
Full match ('k1'='v1';'k2'='v2';123;'k3'='v3')
Group 1. (
Group 2. 123;
Group 3. 'k3'='v3'
Group 4. )
我想要的结果是
Full match ('k1'='v1';'k2'='v2';123;'k3'='v3')
Group 1. (
Group 2. 'k1'='v1';
Group 3. 'k2'='v2'
Group 4. 123;
Group 5. 'k3'='v3'
Group 6. )
(()(\w+);(\w+);(\w+);(\w+)())
string str = "('k1'='v1';'k2'='v2';123;'k3'='v3';456)";
string str = "('k1'='v1';'k2'='v2';123;'k3'='v3';456;789)";
是不是正则表达式又要 改写成 (()(\w+);(\w+);(\w+);(\w+);(\w+)())
是否只用一个正则表达式 包含所有情况? 自动适配,不用每次增加(\w+); ?
mStr = r'''
(
(?:
(?:\'[a-zA-Z]+\d*\'\s*\=\s*\'[a-zA-Z]+\d*\')
|
(?:\d+)
)
)
'''
把空格和换行去掉就可以了
('k1'='v1';'k2'='v2';123;'k3'='v3')
["'k1'='v1'", "'k2'='v2'", '123', "'k3'='v3'"]
mStr = r'''
(\'[a-zA-Z]+\d*\'\s*\=\s*\'[a-zA-Z]+\d*\')
\W*
(\'[a-zA-Z]+\d*\'\s*\=\s*\'[a-zA-Z]+\d*\')
\W*
(\d+)
\W*
(\'[a-zA-Z]+\d*\'\s*\=\s*\'[a-zA-Z]+\d*\')
'''
不好意思,刚刚没注意你的分组要求
('k1'='v1';'k2'='v2';123;'k3'='v3')
[("'k1'='v1'", "'k2'='v2'", '123', "'k3'='v3'")]