我有一個正則表達式來"*"
之間抓住一切:正則表達式匹配,包括新的生產線
str = "Donec sed odio dui. *Nullam id dolor id nibh ultricies vehicula ut*"
str.match(/\*(.*)\*/)[1]
我希望這場比賽能夠包括換行符。我該怎麼做?
我有一個正則表達式來"*"
之間抓住一切:正則表達式匹配,包括新的生產線
str = "Donec sed odio dui. *Nullam id dolor id nibh ultricies vehicula ut*"
str.match(/\*(.*)\*/)[1]
我希望這場比賽能夠包括換行符。我該怎麼做?
你要使用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
將m
修飾符放在/\*(.*)\*/m
之類的正則表達式之後。
順便說一句,你的正則表達式可提高到:
str[/(?<=\*).*(?=\*)/m]
好的,但是當我做'str [/(?<=\*).*(?=\*)/ m]'它說:無 –
你確定你的電腦沒有壞嗎? – sawa
héhénope,自己嘗試: str [/(?<=\*).*(?=\*)/ m] return nil –
...和Ruby沒有's'選項... –
,並且只是改變了這一點,好點。謝謝蒂姆:) –
好吧,我明白了。謝謝! –