間のすべてを取得するための正規表現があります"*"
:
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]