我有一个 python 字符串,我正在尝试提取它。我有一个有趣的问题:
>>> s="SKU 9780136058281, (ASIN B00A2KNZ2S, (binding Merchant: 'paperback' / 'hardcover'))"
>>> print(re.match('ASIN', s))
None
>>> print(re.match('SKU', s))
<_sre.SRE_Match object; span=(0, 3), match='SKU'>
我正在尝试匹配 ASIN 之后的数字。我仍然看不到明显的问题。它匹配行的开头,但不在中间。
最佳答案
re.match
尝试匹配字符串/文本/等的from beginning 模式。相反,您需要使用 re.search
和 grouping :
>>> s="SKU 9780136058281, (ASIN B00A2KNZ2S, (binding Merchant: 'paperback' / 'hardcover'))"
>>> import re
>>> re.search(r'SKU (\d+)',s).group(1)
'9780136058281'
r'SKU (\d+)
将匹配 SKU
之后长度为 1 或更大的任意数字组合 (\d
)和一个空格!
关于Python 正则表达式匹配字符串中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840903/