2016-07-30 73 views
0

例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

这是因为最后加了括号的部分是必需的,而不是可选的。 – usr2564301

回答

3

您应该在之后附加?(0或1匹配)。否则,第一个示例不匹配,因为在任何情况下您都指定要匹配(?:\nIncorporations|\nincorporations)

由于ncorporations在两个* ncorporations常见的,你可以考虑(?:\n[Ii]ncorporations)?而不是(?:\nIncorporations|\nincorporations)?(?:Cap\.?),而不是(?:Cap.|Cap),缩短了一点,也逃脱点(因为.指任何字符)。

+0

谢谢!有效! –

+1

另外,他可能会考虑使用\ n(((i | i)ncorporations)?由于它的方式更短 –

+0

@Raf确实!另一个字符更短:'[Ii]':) – nicael

相关问题