2014-10-02 33 views
0

假設我有一個字符串匹配,並在最後一個分號以下的正則表達式:如何使正則表達式的一部分可選?

\".+\"; 

它將匹配除了一個空的任何字符串,像下面這樣:

""; 

我試着使用這個:

\".+?\"; 

但這並沒有奏效。

我的問題是,我怎樣才能使.+的一部分,可選,所以用戶不必在字符串中放置任何字符?

回答

3

爲了使.+可選的,你可以這樣做:

\"(?:.+)?\"; 

(?:..)被稱爲non-capturing group。它只做匹配操作,它不會捕獲任何東西。在非捕獲組使得整個非捕獲組可選之後,添加?

或者,你可以這樣做:

\".*?\"; 

.*將零次或多次貪婪地匹配任何字符。在*強制正則表達式引擎進行儘可能短的匹配之後,添加?

+1

也許值得一提的是該組中的「?:」是爲了什麼以及爲什麼它可能(或可能不)是必要的。 – 2014-10-02 12:59:02

+2

感謝您的編輯@Tom。 – 2014-10-02 13:08:39

相關問題