有这样的行:
“M{A}{B}{C}”,其中
A-数字
B-空间;可能不存在(如果 C 不存在)
C- 括号中的字符串(即形式为“(text_inside_brackets)”)
什么正则表达式可以得到 A 部分和 C 部分括号内的文本?
例子:
| 字符串 | 结果 |
|---------------------------------|--------- ------ -----------------|
| 《M01 (BlaBlaBla)》 | ('01', 'BlaBlaBla') |
| 《M205 (BlaBlaBla blablablaa)》 | ('205', 'BlaBlaBla blablablaa') |
| “M10” | ('10', '') |
| “M190(括号内的文本)” | ('190', '括号内的文字') |
我使用正则表达式r'^M(\d+).*\((.*)\)',但如果缺少 C 部分并且您必须进行额外检查,则此表达式不起作用
利用
查看表达式如何工作的示例。
细节
^- 行首M- 象征M(\d+)- 捕获子模式#1:一位或多位数字(?:\s*\(([^()]*)\))?- 可选的非捕获子模式:\s*- 零个或多个空白字符\(- 象征(([^()]*)(- 捕获子模式 #2:除and之外的零个或多个字符)\)-符号)。Python代码如何工作的一个例子:
结果: