我有一个文件,其数据具有以下格式:
1 AA/BB 0C89JG
2 ABANO/ANA VICTORIA F12LFJ
3 ABBOUDLASTNAME/ABBOUDF DWPTHC
4 ABDALLAH/SIJAM H0ZDM9
5 ABDEL MESSIH/DINA T0SF8N
6 ABHISHEK/PRAMANIK 7SLKXV
7 ABHYANKAR/DHANANJAY 7SM0BV
8 ABOUSALAMA/FEMKE LTTRQC
9 ABRAMOVA/NATALIA 77LCPZ
10 ABRANTES/JOAO KXZC7Q
11 ABRATH/LUC D5J99J
12 ABREO/HECTOR CXDH4G
13 ABREU/ANDREA 242GRC
14 ABREU/MARCELO 2436R7
15 ABREU/VANDA 3HDNQQ
16 ABTS/NATHALIE DSK9TN
17 ABTS/NATHALIE FZ0LN4
我正在尝试提取例如后6个字符第17行的FZ0LN4
我想出的正则表达式是:
([0-9]{1,5})([A-Z /]) ([0-9A-Z]{6})
但是目前无法正常工作。谁能指出是什么问题?
最佳答案
有几个问题:
您没有匹配某些空格。[A-Z /]
缺少重复运算符。
我将这样重写正则表达式:
In [8]: re.match(r'\s*(\d+)\s*([A-Z /]+?)\s*(\w+)$', ' 15 ABREU/VANDA 3HDNQQ').groups()
Out[8]: ('15', 'ABREU/VANDA', '3HDNQQ')
如果只需要最后六个字符,则不需要正则表达式:
In [15]: s = ' 15 ABREU/VANDA 3HDNQQ'
In [16]: s[-6:]
Out[16]: '3HDNQQ'