2013-07-12 59 views

回答

6

你要使用m選項,允許點以匹配新行:

Donec sed odio dui. *Nullam id dolor id 
nibh ultricies vehicula ut* 

正則表達式str.match(/\*(.*)\*/m)[1]現場示例:http://www.rubular.com/r/11u9TreEOL

您的表情將捕獲第一個和最後一個*符號,但如果你想捕捉每一套*之間的所有文本,然後你想使.*貪心不足像

str.match(/\*(.*?)\*/m)[1]活生生的例子http://www.rubular.com/r/rBLOnwy3By

或者你可以告訴它簡單地匹配所有非*字符,比如,注意不需要m選項作爲新行字符將被取反[^*]字符類匹配:

str.match(/\*([^*]*)\*/)[1]活生生的例子http://www.rubular.com/r/dhQzZ58ZzM

+0

...和Ruby沒有's'選項... –

+0

,並且只是改變了這一點,好點。謝謝蒂姆:) –

+0

好吧,我明白了。謝謝! –

2

m修飾符放在/\*(.*)\*/m之類的正則表達式之後。

順便說一句,你的正則表達式可提高到:

str[/(?<=\*).*(?=\*)/m] 
+0

好的,但是當我做'str [/(?<=\*).*(?=\*)/ m]'它說:無 –

+0

你確定你的電腦沒有壞嗎? – sawa

+0

héhénope,自己嘗試: str [/(?<=\*).*(?=\*)/ m] return nil –