2016-07-30 35 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

相關問題