我试图从这句话中捕捉“图书id:”(与isbn类似,只是它有数字)。我查看了堆栈上的ISBN编号示例,并尝试了不同类型的正则表达式组合,但始终无法将它们捕获到单个列表中。我错过了什么
sentence="List of book ids that are important to read book id: A83827-121-1-23-1341-2315ad3 book id: N32-12-1-23-1341-2342 and book id: A334121A313412342"
isbn = re.compile("(?:[0-9]{3}-)?[0-9]{1,5}-[0-9]{1,7}-[0-9]{1,6}-[0-9][A-Z]",re.IGNORECASE)
matches = []
for line in sentence:
matches.extend(isbn.findall(line))
print(line)
尝试以如下方式捕获最终输出:
['A83827-121-1-23-1341-2315ad3','N32-12-1-23-1341-2342','A334121A313412342']
请注意
for
循环将迭代每个字符:您不需要它以下是您可以使用的正则表达式:
输出:
说明:
[\w-]+
匹配字母数字字符(\w
)和连字符的任何(非空)序列李>findall
将只返回该组中匹配的内容,因此它不包括“book id:”李>相关问题 更多 >
编程相关推荐