如何从下面的完整字符串中提取标题。在标题是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'
答案 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"'