提取用常量分隔的字符串,以两个数字结尾(必须包含数字)

时间:2013-07-01 16:09:05

标签: python regex

我的文字包含以下结构的字符串:

text I do not care about, persons name followed by two IDs.

我知道:

  • 一个人的名字总是以XYZ代码开头,后面跟着 二,空格分隔数字。
  • Name并不总是一个姓氏和名字。它可以是多个姓氏或名字 (想想拉美名字)。

所以,我希望提取遵循常量XYZ代码的字符串,并始终用两个单独的数字终止。

你可以说我的分隔符是XYZ和两个数字,但数字也必须是提取值的一部分。

  等等,等等XYZ名字,名字122322 344322 blah blah

我想提取:

  

姓名,名称122322 344322

有人请建议正则表达式,以便与Python的重新包装一起使用。

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式

(?<=XYZ\s+)[a-zA-Z\s,]+\d+\s+\d+
---------- ----------  ---------
     |         |          |->matches two numbers separated by space
     |         |->matches names separated by ,
     |->lookbehind assertion which checks for a XYZ followed by space before matching the string

答案 1 :(得分:0)

你可以尝试这种模式:

 r"(?<=XYZ )(?:[a-z'-]+,? )+\d+ \d+"

结果是整场比赛。

答案 2 :(得分:0)

(?<=XYZ\s)(\w[^\d]+\d+\s\d+)

您的姓名和号码(\w[^\d]+\d+\s\d+)前面有XYZ