在编写这个答案时,我必须只在换行符上匹配,而不是使用s-flag (dotall -点匹配换行符)。
当尝试在\n或\r\n上匹配时,通常用于测试正则表达式的站点的行为有所不同。
我注意到
\n上匹配换行符
(示例 -删除\r并与之匹配)\n或\r\n上都不匹配换行
除了m-flag和\s之外,我找不到什么东西来匹配它。
(示例)\r\n上匹配,而
这里它只匹配在\n上,使用相同的标志和指定的引擎我完全了解m-flag (多行-使^与开始匹配,$匹配行尾),但有时这不是一种选择。\s也是如此,因为它也匹配制表符和空格。
我使用unicode换行符(\u0085)的想法没有成功,所以:
\n上匹配一次,在\r\n上只匹配一次)?发布于 2013-11-18 19:56:57
我会朝相反的方向回答。
\r和\n的完整解释,我必须参考这个问题,这个问题比我在这里发布的内容要完整得多:\n和\r之间的区别?长话短说,Linux将\n用于新的一行,即Windows \r\n和旧Mac \r。因此,有多种方法可以编写换行符。例如,您的第二个工具(RegExr)在单个\r上匹配。
[\r\n]+将有效,但也将匹配多个连续的新行。(\r\n|\r|\n)更正确。发布于 2018-04-12 08:21:06
在PCRE中,\R与\n、\r和\r\n匹配。
发布于 2013-11-18 20:53:54
在Debuggex中的示例文本中有不同的行尾。特别有趣的是,Debuggex似乎已经确定了您首先使用的行结束样式,并将输入的所有附加行尾转换为该样式。
我使用Notepad++将Unix和Windows格式的示例文本粘贴到Debuggex中,而先粘贴的就是Debuggex的会话。
因此,在将文本粘贴到Debuggex之前,您应该通过文本编辑器清洗文本。确保你在粘贴你想要的风格。Debuggex默认为Unix样式(\n)。
而且,NEL (\u 0085)是完全不同的:https://en.wikipedia.org/wiki/Newline#Unicode
(\r?\n)将覆盖Unix和Windows。如果你也想和老Mac相匹配的话,你需要一些更复杂的东西,比如(\r\n|\r|\n)。
https://stackoverflow.com/questions/20056306
复制相似问题