我将两个标签之间的文本匹配为
/open(.*?)end/
如何在两个标签之间允许一个换行符(\n
)?如果我使用s
修饰符,则允许所有换行符。
答案 0 :(得分:1)
怎么样:
/open([^\n\r]*\R?[^\n\r]*)end/
其中
[^\n\r]*
表示0或更大,也没有换行符\R?
表示0或1任何类型的换行符答案 1 :(得分:1)
您可以使用
'~open(?:(?!open|end).)*(?:\R.*?)?end~'
请参见regex demo
详细信息
open
-开始的子字符串(?:(?!open|end).)*
-尽可能匹配匹配回形符以外的其他任何字符的调和贪婪令牌,该换行符不是end
或start
子字符串的起始字符 li >
(?:\R.*?)?
-换行符的可选序列,后跟除换行符以外的任何0+字符,并且尽可能少end
-尾随子串。