我正在處理Ruby 1.8.7中的一些文本處理以支持我創建的一些自定義簡碼。這裏是我的簡碼的一些例子:Ruby正則表達式太貪心背靠背匹配
[CODE first-part]
[CODE first-part second-part]
我使用正則表達式如下搶
text.gsub!(/\[CODE (\S+)\s?(\S?)\]/i, replacementText)
問題是這樣的:正則表達式不會在下面的文字工作:
[CODE first-part][CODE first-part-again]
的結果如下:
1. first-part][CODE
2. first-part-again
似乎\s?
是正在搜索的正則表達式中有問題的部分,直到它遇到最後一個空間,而不是第一個空間。當我將正則表達式更改爲以下內容:
\[CODE ([\w-]+)\s?(\S*)\]/i
它工作正常。我唯一擔心的是所有\w
與\s
,因爲我想確保\w
將匹配URL安全字符。
我確定這裏有一個完全有效的解釋,但它無法解釋我。有任何想法嗎?謝謝!
「我唯一擔心的是所有\ w vs \ s。」那是什麼意思?你可以使用一個否定的字符類btw:'[^]]或'[^ \]]'(應該是相同的)將匹配任何非'''字符。 –
其實我是S +這是你的問題,因爲它會匹配標記你事物結束的[]。 –
@ m.buettner - 我正在編輯與您下面的評論相同的秒,但僅僅是因爲我在這裏看到您的評論。那謝謝啦! –