0

我有一个包含以下结构的字符串的文本:

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

我知道:

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

因此,我希望提取遵循常量XYZ代码并且始终以两个单独的数字结尾的字符串。

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

等等,等等 XYZ 名称,名称 122322 344322 等等等等

我想提取:

姓名,姓名 122322 344322

有人可以就可以与 Python 的 re 包一起使用的正则表达式提出建议。

4

3 回答 3

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
于 2013-07-01T16:14:39.570 回答
0

你可以试试这个模式:

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

结果是整场比赛。

于 2013-07-01T16:16:53.357 回答
0

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

你的名字和数字(\w[^\d]+\d+\s\d+)前面有XYZ

于 2013-07-01T16:19:05.230 回答