【发布时间】:2020-01-15 13:40:52
【问题描述】:
我想匹配所有\n 或\r,除了那些以@ 开头的行
我有这个正则表达式:
(?!^@.*\r*\n*)(\r*\n*)
例如:
@text text text
@text text text
The line break after this text should be matched
The line break after this text also should be selected
@this line break should not be selected
因此,唯一应该选择的换行符是第 2、第 4、第 5、第 6 和第 7 行中的换行符。 有什么想法吗?
【问题讨论】:
-
"\n\r" 是一个非标准的换行符,除此之外,你的文本是多行的。你能详细说明一下吗?
-
我只是在示例中添加了 \n 和 \r 以使其清楚,是的,我的文本是多行的,我想我可以添加 m 标志,对吗?如果它适用于一行
-
您确实意识到,例如“\n”是换行符,而“\r”在某种程度上也是行分隔符?
-
什么平台使用
\n\r作为换行符? AFAIK Linux/Unix 使用\n,Mac 使用\r,Windows 使用\r\n -
如上所述,“\n\r”是非标准的。 "\r" 只用在旧的 Mac 上(我不认为他们现在这样做了?)。但是,由于那个遗留原因,例如多行标志
m仍将“\r”视为行分隔符。当在具有 CRLF 行结尾的字符串上使用它时,这会导致非常烦人的行为。
标签: javascript regex regex-lookarounds