2014-07-02 42 views
0

正則表達式對我來說是新的(但它們是美好而有用的:D)。但是,在嘗試在TextMate中使用它們之後,我得到了意想不到的結果。我不確定這是一個錯誤還是正則表達式的工作原理。TextMate中的正則表達式問題

我有這樣的代碼

begin text in the middle end and more text and a 
second begin second text in the middle end 

begin.+end搜索我希望兩個結果

  1. begin text in the middle end
  2. begin second text in the middle end

但我得到的選擇了整個文本;我期望begin.+end搜索.+,直到找到第一個end,但它搜索直到最後一個。

這是他們如何工作?我在哪裏可以學習如何使用正則表達式?

事實是,我很感興趣,只是選擇內部.+沒有beginend但這是另一個問題。

回答

1

使用下面的正則表達式來獲得開始和結束之間的字符串,

(?<=begin).+?(?=end) 

DEMO

說明:

  • (?<=begin)正向後看使用後搭配具體模式。在這個例子中,正則表達式引擎在剛剛開始之後設置匹配標記。
  • .+?匹配一個或多個字符。 ?使正則表達式非貪婪,因此它會導致最短匹配。
  • (?=end)一旦發現字符串end,正則表達式引擎停止匹配。因此給你開始和結束之間的字符。
+0

關鍵是'。+?';)剩下的就是我需要學習的東西。 – Manuel

+0

@Manuel增加了exp爲'。+?' –

+0

在本演示中添加和刪除'?'可以看出區別http://regex101.com/r/oX4qT1/3 –