python 正则表达 前向界定与后向界定

>>> a ‘[acyl-carrier-protein] S-malonyltransferase [EC:2.3.1.39]’ >>> b = re.findall(r'(?<=\[EC:).+?(?=\])’,a) >>> b [‘2.3.1.39′] >>> b = re.findall(r'(?<=\[).+?(?=\])’,a) >>> b [‘acyl-carrier-protein’, ‘EC:2.3.1.39′]

前向界定与后向界定

有时候需要匹配一个跟在特定内容后面的或者在特定内容前面的字符串,Python提供一个简便的前向界定和后向界定功能,或者叫前导指定和跟从指定功能。它们是:

‘(?<=…)’ 前向界定

括号中’…’代表你希望匹配的字符串的前面应该出现的字符串。

‘(?=…)’ 后向界定

括号中的’…’代表你希望匹配的字符串后面应该出现的字符串。

例: 你希望找出c语言的注释中的内容,它们是包含在’/*’和’*/’之间,不过你并不希望匹配的结果把’/*’和’*/’也包括进来,那么你可以这样用:

>>> s=r’/* comment 1 */ code /* comment 2 */’

>>> re.findall( r’(?<=//*).+?(?=/*/)’ , s )

[‘ comment 1 ‘, ‘ comment 2 ‘]

[…]