如何提取字符串的前3个数字:
在:
"Box 123 (NO) 456"
出:
123
答案 0 :(得分:3)
只需搜索\d{3}
并抓住第一场比赛:
match = re.search(r'\d{3}', inputstring)
if match:
print match.group(0)
演示:
>>> import re
>>> inputstring = "Box 123 (NO) 456"
>>> match = re.search(r'\d{3}', inputstring)
>>> if match:
... print match.group(0)
...
123
请注意,上面的也匹配子字符串;如果您有一个四位数的数字,它将匹配该数字的前三位数。
你的帖子非常稀疏的细节;让我们假设上面的内容不够,但是你的数字是用空格分隔的,那么你可以使用\b
锚来匹配完全 3位数:
match = re.search(r'\b\d{3}\b', inputstring)
匹配仅非字字符之间的3位数字(字符串的开头或结尾,空格,标点符号等。不是字母,数字或下划线):
>>> re.search(r'\b\d{3}\b', inputstring)
<_sre.SRE_Match object at 0x106c4f100>
>>> re.search(r'\b\d{3}\b', "Box 1234")
>>> re.search(r'\b\d{3}\b', "Box 123")
<_sre.SRE_Match object at 0x106c4f1d0>