我有这个文字行:
01102574 04 n 02 republication 0 republishing 0 003 @ 01101958 n 0000 ! 01746163 v 0201 + 01746163 v 0101 ! 01758710 v 0541 + 00967643 v 0201
我需要在问号之后提取前8个数字和每个段:
01102574! 01746163 v 0201! 01758710 v 0541
我在python中使用这个正则表达式:
pattern = re.compile(r"""
^([0-9]{8})(.*?)\ !\ (([0-9]{8}\ [a-z]{1}\ [0-9]{4}))
""", re.VERBOSE | re.MULTILINE)
for match in pattern.finditer(text_in):
output = "%s %s\n" % (match.group(1, 3))
我的问题是我只能在问号之后获得第一段而不是其他段。如何将正则表达式与所有段相匹配。
提前致谢。
答案 0 :(得分:1)
您可以使用:
import re
text_in = "01102574 04 n 02 republication 0 republishing 0 003 @ 01101958 n 0000 ! 01746163 v 0201 + 01746163 v 0101 ! 01758710 v 0541 + 00967643 v 0201";
pattern = re.compile("((^[0-9]{8})|(! [0-9]+ [a-z] [0-9]{4}))")
for match in pattern.findall(text_in):
print match[0]
输出:
01102574
! 01746163 v 0201
! 01758710 v 0541