涉及CRLF的Autohotkey正则表达式“bug”

时间:2013-10-18 23:55:14

标签: regex newline

这是一个表达式,用于删除剪贴板中不以字母“a”开头的任何行:

Clipboard := RegExReplace(Clipboard, "m)^[^a].+?`r`n", "")

为什么删除以下列表中的空白行 AND “a fox”行?

快速
棕色

狐狸
跳跃

我的其他正则表达式应用程序仅删除空白行,但不删除“a fox”。如何编写表达式以保留“a fox”行?

感谢。

1 个答案:

答案 0 :(得分:0)

因为空白行包含 no 字符,所以模式^[^a]匹配并使用换行符,这是行开头后的下一个字符,其余的是模式然后匹配消耗下一整行的下一个换行符。

事实上,你的模式会删除空行后的任何行,无论它是否以“a”开头。

尝试允许行尾或不行“a”,如下所示:

Clipboard := RegExReplace(Clipboard, "(?m)^($|[^a].+?)`r`n", "")