Bas*_*i M 128 regex language-agnostic line-breaks
在写这个答案时,我必须完全匹配换行符而不是使用s
-flag(dotall
- dot匹配换行符).
通常用于测试正则表达式的站点在尝试匹配\n
或时匹配时表现不同\r\n
.
我注意到
Regex101仅匹配换行符\n
(例如 - 删除\r
并匹配)
RegExr匹配换行符既不上\n
也不对\r\n
,我无法找到的东西,使之匹配断行,除了m
-flag和\s
(例如)
Debuggex的行为更加不同:
在这个例子中它只匹配on \r\n
,而
在这里它只匹配on \n
,同时指定相同的标志和引擎
我完全知道m
-flag(多行 - ^
匹配行的开头和$
结尾),但有时这不是一个选项.同样\s
,因为它匹配标签和空格.
我想使用unicode换行符(\u0085
)不成功,所以:
\n
一次只\r\n
)?Pet*_*Wal 183
要朝相反的方向回答;)
2)关于\ r和\n的完整解释我必须参考这个问题,这比我在这里发布的要完整得多:\n和\ r \n之间的区别?
简而言之,Linux使用\n表示新行,Windows\r \n和旧版Mac\r.因此,有多种方法可以编写换行符.您的第二个工具(RegExr)例如匹配单个\ r \n.
1)[\r\n]+
正如Ilya所建议的那样,但也会连续多次连接新线.(\r\n|\r|\n)
更正确.
Debuggex中的示例文本中有不同的行结尾.特别有趣的是,Debuggex似乎已经确定了您首先使用的行结尾样式,并且它将所有输入的行结尾转换为该样式.
我使用Notepad ++将Unix和Windows格式的示例文本粘贴到Debuggex中,无论我先粘贴的是Debuggex会话所坚持的内容.
因此,在将文本粘贴到Debuggex之前,应该通过文本编辑器清洗文本.确保您粘贴所需的样式.Debuggex默认为Unix风格(\n).
此外,NEL(\ u0085)完全不同:https://en.wikipedia.org/wiki/Newline#Unicode
(\r?\n)
将涵盖Unix和Windows.你需要更复杂的东西,比如(\r\n|\r|\n)
,如果你想匹配旧的Mac.