使用正则表达式从字符串中提取标题

时间:2015-03-01 19:54:20

标签: python regex

如何从下面的完整字符串中提取标题。在标题是ISO领域(AU)之前,标题是一年(2005年)之后。

# format = 'ISOCountry,Title,Year,etc.'
s1 = 'AU,Singh Is "Ki,nng",2005,,,No,,,'
s2 = 'US,Penguins,2012,,Yes,,,,'

到目前为止,我有:

re.split(r',\d{4}', s1)

虽然这还不够精确。

结果应该产生:

result(s1) = 'Singh Is "Ki,nng"'
result(s2) = 'Penguins'

3 个答案:

答案 0 :(得分:1)

这样做:

\w{2},(.*),\d{4}

让我们解释一下:

\w{2}, - 匹配2个字母和昏迷

(.*) - 匹配所有内容直到......

,\d{4} - ...昏迷和4个号码

答案 1 :(得分:0)

如果我理解你的话,我认为这个正则表达式应该有效:

/[A-Z][A-Z],(.+),\d\d\d\d/

因为+是贪婪的,所以它会匹配尽可能多的字符。

答案 2 :(得分:0)

鉴于ISO代码始终是两个字母,您可以使用当前正则表达式的切片。例如:

>>> s1 = 'AU,Singh Is "Ki,nng",2005,,,No,,,'
>>> re.split(r',\d{4}', s1)[0][3:]
'Singh Is "Ki,nng"'

或者你可以试试:

>>> re.findall(r'[A-Z]{2},(.+),\d{4}', s1)[0]
'Singh Is "Ki,nng"'