我没有制定RegExp发现
我尝试了/^.+?(?=\r?\n|\r|<%|%>)?/
,但它始终只匹配第一个字符。
E.g。 e = /^.+?(?=\r?\n|\r|<%|%>)?/.exec("test\nabc")
找到e[0] = "t"
。
原因是,可以使用/\r?\n|\r|<%|%>/
进行点击,但也许你们中的一个人知道更好的方法。
答案 0 :(得分:1)
你的模式非常接近。 ^.+?
是懒惰的,它与它的匹配程度相同。 (?=\r?\n|\r|<%|%>)?
是可选的,它永远不必回溯 - 在单个字符后满足正则表达式。删除?
会有更好的结果,但它不会处理没有停用词的单行文本。
一种更简单的方法是使用/m
标志,这使$
匹配字符串的结尾或行的结尾:
/^.*?(?=$|<%|%>)/m
我还将+
更改为*
- 它应该处理空行或以<%
或%>
开头的行。
答案 1 :(得分:0)
如果我正确理解你的问题,那么这个应该可以解决问题:
var re = /^(?:(?![\r\n]|<%|%>).)+/;