the*_*men 1 python regex string python-2.7
我有一个如下所示的字符串:
26 (passengers:22 crew:4)
Run Code Online (Sandbox Code Playgroud)
要么
32 (passengers:? crew: ?)
Run Code Online (Sandbox Code Playgroud)
.我要做的是拆分代码,以便只提取代表乘客和机组人数的数字.如果是问号,我会将其替换为"".
我知道我可以使用string.replace("?","")替换?但是我该如何分别为船员或乘客提取数字字符呢?数字可能会从两位数变为三位,因此我无法将字符串中的最后几个字符或特定间隔切片.
提前致谢
与那些匹配的正则表达式将是:
r'\(\s*passengers:\s*(\d{1,3}|\?)\s+ crew:\s*(\d{1,3}|\?)\s*\)'
Run Code Online (Sandbox Code Playgroud)
抛出一些额外的空白容差.
结果:
>>> import re
>>> numbers = re.compile(r'\(\s*passengers:\s*(\d{1,3}|\?)\s+ crew:\s*(\d{1,3}|\?)\s*\)')
>>> numbers.search('26 (passengers:22 crew:4)').groups()
('22', '4')
>>> numbers.search('32 (passengers:? crew: ?)').groups()
('?', '?')
Run Code Online (Sandbox Code Playgroud)