正则表达式为python正则表达式

时间:2016-12-09 22:56:06

标签: python regex

我有很多带有SURENAME__notalwaysmiddlename_firstnames_1230123Abc123-16x_notalways.pdf模式的文件名,例如:

  • SMITH_John_001322Cde444-16v_HA.pdf
  • FLORRICK-DOILE_Debora_Alicia_321333Gef213-16p.pdf
  • ROBINSON-SMITH_Maria-Louise_321333Gef213-16p_GH.pdf

我的旧正则表达式是([\w]*)_([\w-\w]+)\.\w+但是在切换到Python并获得第一个双管姓氏后(甚至在名字中)我无法让它运行。

使用旧的正则表达式我有两组:

  1. SMITH_James
  2. 001322Cde444-16v_HA
  3. 但现在我不知道如何使用re来实现这一点,甚至包括组1中的偶然双管名称和组2中的ID。

1 个答案:

答案 0 :(得分:1)

([A-Z-]+)(?:_([A-z-]+))?_([A-z-]+)_(\d.*)\.

此模式将返回姓氏,潜在的中间名,名字和最终字符串。

  • ([A-Z-]+)会返回一个包含-
  • 的大写字词
  • (?:_([A-z-]+))?会返回前面带有_的字词的0或1个匹配项。 (?:使_非捕获
  • ([A-z-]+)会返回一个也可以包含-
  • 的字词
  • (\d.*)返回以数字
  • 开头的字符串
  • \.在文件类型
  • 之前找到转义期