正则表达式查找所有LF字符而不是CRLF十六进制

时间:2016-07-14 00:44:54

标签: regex

我正在查看CSV文件,该文件在字段中间包含LF字符,而CRLF字符实际上表示新行。我在Sublime Text 3中以十六进制查看文件,我想在我搜索LF字符但不是CRLF的地方进行简单的查找和替换,并用空格替换它。

我已经到了搜索LF而不是CRLF,我可以使用正则表达式

[^0d]0a。问题在于它没有捕获你可以拥有XX0d 0aXX并且我不知道如何用正则表达式捕获它的情况。然后我想用'20'替换它,这是十六进制的空格。

1 个答案:

答案 0 :(得分:4)

使用与0d匹配的负面lookbehind和可选的空格。

(?<!0d\s*)0a

然而,一些正则表达式引擎不允许使用量词视图。所以你可能需要在lookbehind之后进行空白检查,然后捕获它以在替换中使用它。

(?<!0d)(\s*)0a replace with ${1}20

如果您在文本模式而不是十六进制中执行此操作可能会更容易。取代

(?<!\r)\n

有空间。