如何在正则表达式中允许单行中断?
How to allow a single line break in regex?
我将两个标签之间的文本匹配为
/open(.*?)end/
如何在两个标签之间允许一个换行符 (\n
)?如果我使用 s
修饰符,则允许所有换行符。
怎么样:
/open([^\n\r]*\R?[^\n\r]*)end/
其中
[^\n\r]*
表示 0 个或多个也不是换行符
\R?
表示 0 或 1 任何类型的换行符
您可以使用
'~open(?:(?!open|end).)*(?:\R.*?)?end~'
详情
open
- 起始子串
(?:(?!open|end).)*
- 匹配除换行符以外的任何字符的缓和贪婪标记,该字符不是 end
或 start
子字符串的起始字符,尽可能多
(?:\R.*?)?
- 一个可选的换行符序列,后跟除换行符以外的任何 0+ 个字符,尽可能少
end
- 尾随子字符串。
我将两个标签之间的文本匹配为
/open(.*?)end/
如何在两个标签之间允许一个换行符 (\n
)?如果我使用 s
修饰符,则允许所有换行符。
怎么样:
/open([^\n\r]*\R?[^\n\r]*)end/
其中
[^\n\r]*
表示 0 个或多个也不是换行符\R?
表示 0 或 1 任何类型的换行符
您可以使用
'~open(?:(?!open|end).)*(?:\R.*?)?end~'
详情
open
- 起始子串(?:(?!open|end).)*
- 匹配除换行符以外的任何字符的缓和贪婪标记,该字符不是end
或start
子字符串的起始字符,尽可能多(?:\R.*?)?
- 一个可选的换行符序列,后跟除换行符以外的任何 0+ 个字符,尽可能少end
- 尾随子字符串。