0
假設我有一個字符串匹配,並在最後一個分號以下的正則表達式:如何使正則表達式的一部分可選?
\".+\";
它將匹配除了一個空的任何字符串,像下面這樣:
"";
我試着使用這個:
\".+?\";
但這並沒有奏效。
我的問題是,我怎樣才能使.+
的一部分,可選,所以用戶不必在字符串中放置任何字符?
假設我有一個字符串匹配,並在最後一個分號以下的正則表達式:如何使正則表達式的一部分可選?
\".+\";
它將匹配除了一個空的任何字符串,像下面這樣:
"";
我試着使用這個:
\".+?\";
但這並沒有奏效。
我的問題是,我怎樣才能使.+
的一部分,可選,所以用戶不必在字符串中放置任何字符?
爲了使.+
可選的,你可以這樣做:
\"(?:.+)?\";
(?:..)
被稱爲non-capturing group。它只做匹配操作,它不會捕獲任何東西。在非捕獲組使得整個非捕獲組可選之後,添加?
。
或者,你可以這樣做:
\".*?\";
.*
將零次或多次貪婪地匹配任何字符。在*
強制正則表達式引擎進行儘可能短的匹配之後,添加?
。
也許值得一提的是該組中的「?:」是爲了什麼以及爲什麼它可能(或可能不)是必要的。 – 2014-10-02 12:59:02
感謝您的編輯@Tom。 – 2014-10-02 13:08:39