正则表达式匹配字符串(如果存在)

时间:2016-07-30 09:51:37

标签: regex python-3.x

示例1:

THE COMPANIES ACT 
(Cap 486)
IT IS notified 

示例2:

THE COMPANIES ACT
(Cap. 486)
Incorporations
IT IS notified 

我当前的正则表达式:THE COMPANIES ACT\n\(((?:Cap.|Cap) .*?)\)(?:\nIncorporations|\nincorporations)\nIT IS notified仅匹配示例2.

我希望它能与两个例子相匹配。

1 个答案:

答案 0 :(得分:3)

您应该通过在其后添加(?:\nIncorporations|\nincorporations)(0或1匹配)来使?成为可选项。否则,第一个示例不匹配,因为您已指定要在任何情况下匹配(?:\nIncorporations|\nincorporations)

由于ncorporations在两个* ncorporations中都很常见,您可以考虑(?:\n[Ii]ncorporations)?而不是(?:\nIncorporations|\nincorporations)?(?:Cap\.?)而不是(?:Cap.|Cap)来缩短它并且还要转义点(因为.表示任何字符)。