Skip to main content
 首页 » 编程设计

python之为 6 个字符的代码编写正则表达式

2025年05月04日30myhome

我有一个包含以下格式数据的文件:

   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'