我仍在努力在Javascript中学习正则表达式。我试图创建一个降价转换器,它将转换如下:
> this text should be matched
- &gt; <span>this text should be matched</span>
我已经解决了这个问题,但我试图让它变得更复杂,如下所示:
> this is a match
> so is this, but should be in the same match as above
> this should be a seperate match > this is nothing
等于:
<span>this is a match so is this, but should be in the same match as above</span>
<span>this should be a seperate match > this is nothing</span>
但我遇到的问题是使用我目前拥有的正则表达式(/^\>(.*?)(?=\>|\n\n)/gm
),它将前两个作为单独的匹配。
请参阅我的示例:https://regex101.com/r/cZkJAT/2
任何帮助都会很棒,谢谢。
答案 0 :(得分:0)
您正在寻找正则表达式的dotall修饰符,它会强制点匹配不同的行,默认情况下不会这样做。 JS正则表达式不存在这种情况,但作为一种解决方法,您可以将正则表达式改写为以下内容:
(/^\>([\s\S]*?)(?=\>|\n\n)/gm
另外,作为关于行结尾的快速说明,Unix在您的模式中使用\n
,但Window使用\r\n
。要匹配以两者结尾的行,您可以使用\r?\n
。