在写这个答案时,我必须只匹配换行符,而不是使用s标志(dotall - dot匹配换行符)。
通常用于测试正则表达式的站点在尝试匹配\n或\r\n时表现不同。
我注意到
Regex101只匹配\n上的换行符 (示例-删除\r,它匹配) RegExr既不在\n上也不在\r\n上匹配换行符 我找不到什么东西让它匹配换行符,除了m标志和\s (例子) Debuggex的行为更加不同: 在这个例子中,它只匹配\r\n,而 这里它只匹配\n,并指定了相同的标志和引擎
我完全了解m标志(multiline -使^匹配一行的开始和$结束),但有时这不是一个选项。\s也是一样,因为它也匹配制表符和空格。
我想使用unicode换行符(\u0085)是不成功的,所以:
是否有一种安全的方法将换行符上的匹配(最好与使用的语言无关)集成到正则表达式中? 为什么上面提到的站点行为不同(尤其是Debuggex,只在\n上匹配一次,而在\r\n上只匹配一次)?