我有一个正则表达式来获取以下之间的所有内容"*"
:
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]