對不起提前,這可能是一個有點挑戰性閱讀...正則表達式的問題與*懶惰
我試圖解析線(實際上從IMAP服務器主題行),看起來像這樣:
=?utf-8?Q?Here is som?= =?utf-8?Q?e text.?=
這有點難看,但在上面的行中有兩個=?/?=
對。 (總會有一對;理論上可能有很多。)在這兩個=?/?=
對的每一對中,我想要提取第三個參數(由?
分隔符定義)。 (第一對,它是「這裏是SOM」,並在第二個它的「電子文本。」)
下面是我使用的正則表達式:
=\?(.+)\?.\?(.*?)\?=
我想它返回兩場比賽,每對=?/?=
一對。相反,它將整條線路作爲單個匹配返回。我原以爲(.*?)
中的?
爲了讓*
運算符懶惰,就不會發生這種情況,但顯然它不會。
有什麼建議嗎?
編輯:根據以下建議取代「。?」與「[^(\?=)]?」我現在試圖做的:
=\?(.+)\?.\?([^(\?=)]*?)\?=
...但它不工作,要麼。 (我不確定[^(\?=)] *?是否是排除雙字符序列的正確方法,如「?=」。是否正確?)
有效的建議,但你修改了錯誤的參數:它應該是第二組圓括號,而不是第一組。 (參見上面我的編輯。)另外,結尾分隔符是一個?=,而不僅僅是一個?。我該如何測試?謝謝。 –