regex-Notepad ++搜索并替换丢失的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了regex-Notepad ++搜索并替换丢失的行相关的知识,希望对你有一定的参考价值。

我对正则表达式非常陌生,我正在尝试使用Notepad ++清理一些CSV文件。我正在运行版本7.8.2(64位),因为我的文件太大,无法打开32位版本。

在数据内,大多数字段已标准化,并由系统自动生成。用户可以在一个字段中输入评论,但是在某些情况下,用户已经在该字段中输入了换行符。发生这种情况时,Notepad ++会为此数据创建一个新行。

在一个简洁的示例中(第三行是第二行的延续):

“39901”, “PY02472311”, “183", “Vision Insurance”, “ ” LF
“39901”, “0002492405”, “2”, “Reallocate expenses from Other to Consulting. LF
For more information, contact Capo at (XXX) XXX-XXXX.”, “ ” LF
“39901”, “TV02576029”, “9”, “Travel Expense Accruals”, “ ” LF

我正在尝试删除第三行中多余的换行符,以使数据看起来像这样:

“39901”, “PY02472311”, “183", “Vision Insurance”, “ ” LF
“39901”, “0002492405”, “2”, “Reallocate expenses from Other to Consulting. For more information, contact Capo at (XXX) XXX-XXXX.”, “ ” LF
“39901”, “TV02576029”, “9”, “Travel Expense Accruals”, “ ” LF

没有回车符,只有换行符,因此搜索 也会标记应合法结束该行的所有换行符。

在这种情况下,数据的结构使得最后一列始终为空白(“”)。因此,我尝试搜索结尾不为空的行-该行以字母,数字,句点,空格等结尾。我的计划是用唯一的奇数词替换这些实例,然后再进行第二次,扩展了搜索和替换范围,以摆脱新的表达式和换行符。

尽管不方便,但我一直在逐步进行:

  • d{1}$查找最后一个字符为数字的行;
  • w{1}$查找最后一个字符为字母的行;
  • s{1}$查找最后一个字符为空格的行;和
  • [.$查找以句点结尾的行。

然后,我将进行最后一次搜索,以查找所有不以39901开头的散列者。

我将这些搜索作为常规搜索运行,然后替换为REPLACEHERE999_,我假设没有其他人输入数据。我知道这将删除并替换行中的最后一个字符-最终数字,字母,空格等-但我可以接受。在完成这些替换之后,我计划进行第二次扩展搜索,以换掉REPLACEHERE999_ 和一个空格,同时摆脱REPLACEHERE999_和换行。

[当我进行第一次搜索时,它们会根据我最初在Power Query中得到的错误数量进行合理的替换次数,例如d{1}$的377。但是,一旦我进行了这些替换,行数就会大大减少。最初,我有3,919,186行,但是在第一次搜索和替换–d{1}$–之后,我只有1,543,818行,不到开始时的一半。一次完成前几个替换项时,我不会丢失任何行,但是当我使用“全部替换”时,它们会消失。

同样,我只是从regex / Notepad ++开始,所以我可能缺少一些基本的东西。但是,如果我只进行有限数量的更换,为什么我的许多生产线都消失了?欢迎提出关于我的搜索或思想的评论和建议,但是消失的线条是此处的关键问题。

谢谢!

答案

我相信您应该可以匹配(“[^” ]+)R+并替换为1

在模式中,分组的部分从开始的引号开始匹配,直到遇到结束的引号或行尾字符为止。然后,它匹配后续的行尾字符,并通过省略行尾字符来替换整个行。

另一答案
  • Ctrl + H
  • 查找内容:R(?!“)
  • 替换为:LEAVE EMPTY
  • 检查 环绕
  • CHECK 正则表达式
  • 全部替换

说明:

R          # any kind of linebreak
(?!“)       # negative lookahead, make sure we haven't “ after

屏幕截图(之前):

enter image description here

屏幕截图(之后):

enter image description here

以上是关于regex-Notepad ++搜索并替换丢失的行的主要内容,如果未能解决你的问题,请参考以下文章

将冒号插入Mac地址列表

使用正则表达式删除任何空白行

日志文件跟踪工具

LibreCalc 搜索和替换,搜索 [] 并替换它,以及它的内容

MySQL搜索并替换字段中的一些文本

通配符 SQL 查询以搜索特定文本并替换