假设以下字符串:
A01B100
A01.B100
A01
A01................................B100
(A 和 B 之间的任何值)
问题是,数字应该是 \d+
,并且在所有字符串中,A 将始终存在,而 B 可能不存在。 A 后面将始终跟一个或多个数字,如果存在,B 也将如此。我可以使用什么正则表达式来捕获 A 和 B 的数字?
我有以下正则表达式:
(A(\d+)).*?(B?(\d+)?)
但这只适用于第一种和第三种情况。
最佳答案
A
必须在B
之前吗?假设是。B
可以出现多次吗?假设没有。B
是否可以作为B
号码组的一部分出现?假设没有。
然后,
A\d+.*?(B\d+)?
使用惰性 .*?或
A\d+[^B]*(B\d+)?
效率更高,但要求 B
是单个字符。
编辑:经过进一步思考,我以一种不太完美的方式将模式括起来。以下模式应该需要更少的假设:
A\d+(.*?B\d+)?
a\d+([^B]*B\d+)?
关于python - 我可以使用什么正则表达式从该字符串中捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301257/