2011-04-25 50 views
0

我不是很好的正則表達式,但在TextMate中,我試圖清理出看起來像正則表達式的問題 - 精細向後和向前不TextMate的

<comments> 
    <sub_node>.... 
.... 
</comments> 

一個XML文件中的一些多線而我在查找使用該/與正則表達式替換,

<comments>(?m:.*)</comments> 

還有就是上面的多次出現,但如果我做了查找,找到的第一個,然後選擇在外面,包括節點之間的一切直到文件中的最後一個。

如果我從最後一行查找前一個(向後),它會正確捕獲一個塊。我不確定我在這裏做錯了什麼,如果有人甚至可能會提出一個更有效的方法。

謝謝。

回答

2

您需要使用非貪婪修飾符。我對Textmate一無所知,所以我不知道它是否支持它們。如果沒有,則可以搜索<comments>,然後搜索任何非</comments>後跟<comments>的數目。 (這將是更具體的幫助,但您發佈的示例是陌生的,必須是一些Textmate怪異。)

+0

是的,感謝您的信息,我猜我必須更具體地做。 – 2011-04-25 02:21:13

0

聽起來像完全正常的行爲,對我來說。你只需要使用一個不情願的量詞,它意味着將?,像這樣:

<comments>(?m:.*?)</comments> 

這裏唯一古怪的是m(即「多」)修改,允許.元字符匹配換行符。大多數正則表達式稱爲「單行」或「點匹配全部」模式,並使用s來指定它。這些口味傾向於支持m /「多線」模式,這改變了^$anchors的行爲。在TextMate中,這是默認模式,不能更改。