0
任何人都可以告訴我如何匹配兩個點之間最接近的模式。例如,我有一個字符串「你好,你好,你好嗎」,說我想提取包括「是」的句子。所以我寫了正則表達式「。(。+?are。+?\。)」。但是,我只能得到「你好,你好嗎」。而不是「你好嗎」。任何人都可以幫助解決這個問題嗎?非常感謝。正則表達式匹配最後一次出現與特定字符串
任何人都可以告訴我如何匹配兩個點之間最接近的模式。例如,我有一個字符串「你好,你好,你好嗎」,說我想提取包括「是」的句子。所以我寫了正則表達式「。(。+?are。+?\。)」。但是,我只能得到「你好,你好嗎」。而不是「你好嗎」。任何人都可以幫助解決這個問題嗎?非常感謝。正則表達式匹配最後一次出現與特定字符串
.
(元字符)包括.
(字符)。你可以通過排除像這樣的.
字符得到想要的結果:
\.[^.]*?are[^.]*?\.
在PCRE
或者(?<=\.)[^.]*?are[^.]*?\.
或\.\K[^.]*?are[^.]*?\.
如果你想排除在比賽第1期。
它的工作原理。非常感謝。順便說一下,你能告訴我「[^。] *?」之間的區別嗎?和「。+?」 – user4598881 2015-02-23 22:30:56
不客氣。 '.'匹配一個不是換行符的單個字符。 '[^。]'匹配一個不是句號的單個字符。 '+'表示*「一次或多次」*,而'*'表示*「零次或多次」*。 '?'使得量詞不合格。所以'。+?'表示*「一個或多個不包含換行符的字符(儘可能少)」*,'[^。] *?'表示*「零個或多個字符(儘可能少)不包含句點「*。 – 2015-02-24 00:08:53
Hi @ user4598881如果此答案已解決您的問題,請點擊複選標記,考慮[接受它](http://meta.stackexchange.com/q/5234/179419)。這向更廣泛的社區表明,您已找到解決方案,併爲回答者和您自己提供了一些聲譽:) (沒有義務這麼做!) – 2015-03-05 01:43:46