2015-04-12 320 views
2

我有一个非常长的文本文件,其中包含两行格式的数据记录。有没有办法使用IDM UltraEdit简单地将所有“换行符”字符替换为空格?如何使用ultraedit删除换行符?

样品输入记录(两行):

OPCODE { V { X1; } 
      W { all=set; } } 

需要被重新格式化成单行

OPCODE { V { X1; } W { all=set; } } 

我已经用UltraEdit试图查找和使用正则表达式捕捉替换换行符:

使用正则表达式:}[^n][ ]+W

替换为:} W

但结果是(第二条线之前去除空白字符)

OPCODE { V { X1; } 
W { all=set; } } 

我用UltraEdit版本19.10.0.1016。

回答

2

UltraEdit有3个正则表达式引擎。

随着的UltraEdit正则表达式引擎的搜索字符串可以是}[ ^t^r^n]+W或更短}[ ^t^p]+W和替换字符串是} W

随着的Unix正则表达式引擎的搜索字符串是}[ \t\r\n]+W和替换字符串也} W

而且最强大的Perl正则表达式引擎有以下几个选项:

  1. 搜索字符串是\}[ \t\r\n]+W和替换字符串也} W
    }必须在搜索字符串中使用Perl regexp语法中的反斜杠进行转义,否则搜索字符串将无效。这很可能是最快的版本。

  2. 搜索字符串是\}\s+W并且替换字符串是} W
    \s匹配任何包含换行符控制字符的空格字符回车符和换行符以及文本文件中的其他字符不常用于Unicode表中的空格。由于\s定义的字符数较大,因此这很可能比第一个选项慢。

  3. 搜索字符串是(?<=\})\s+(?=W),替换字符串只是一个空格字符。
    (?<=\})对于}(?=W)是一个积极的后视W是一个积极的前瞻。如果可能的话,后视和前视使搜索总体上比搜索更慢。

  4. 还有很多其他搜索/替换表达式。

壳体-灵敏度由匹配大小写控制在替换对话框选项。

+0

谢谢 - 虽然所有的正则表达式确实找到了模式,但替换并不是将这两行重新合并为一个 - 你能发布一个例子吗(图片?) – NirMH

+0

我在使用UE v22.0.0发布之前测试了所有表达式。 55。现在我测试了它们全部也从归档恢复的UE v19.10.0.1012。我没有构建UE v19.10的版本1016。为您的输入块生成的所有替换预期的一行输出。您确定替换编辑字段在开始或结束时不包含不可见的换行符吗? UE还支持多行搜索/替换字符串。设置输入焦点以替换编辑栏并按下END键。如果在'W'之后脱字符号不闪烁,则替换字符串中会出现不必要的换行符。而关键的HOME应该会导致'}'左边的插入符号。 – Mofi

+0

你是对的!看起来像我在替换字符串中有不必要的换行符 - 感谢您的帮助。 – NirMH