如何找到并替换这种情况

时间:2009-04-09 17:34:26

标签: regex

我在预定义目录中有一些文本文件,文件以* .edi结尾 它们中的每一个都在一个单独的行中引用:

data_file   file_n.data

我必须将每个.edi文件中的这一行转换为类似

data_file   'another_directory/file_n.data'

我最后会添加'another_directory /' 因为数据将在另一个目录中。 我有200个.edi文件文件,手动处理它们很繁琐! regexp的任何帮助? 顺便说一句,我使用UltraEdit引擎进行regexp。

a_dir/
   file1.edi
   file2.edi
   file3.edi
   ...

并且每个文件引用一行:

data file   file_n.data

变为:--->

data_file   'another_directory/file_n.data'

4 个答案:

答案 0 :(得分:1)

使用Perl正则表达式引擎在搜索菜单中执行替换文件:

查找

^(\s*data file\s+)(.+)$

替换:

\1'another_directory/\2'

在文件/类型中:

*.edi

目录:

<whatever the directory with all your edi files is>    

(在UltraEdit中测试,对我有用)

答案 1 :(得分:0)

使用空格替换空格,然后使用another_directory/使用适当的元字符替换/

答案 2 :(得分:0)

ultraedit已找到并替换文件。如果你在v13 +它也有PERL兼容的正则表达式。

如果启用PERL兼容正则表达式,则可以使用:

查找内容:“(file_ \ d + .data)”(不带双引号)

替换为:“'another_directory / $ 1'”(不带双引号)

对于旧式UltraEdit语法,正则表达式使用:

查找内容:“^(file_ [0-9] + ^。data ^)”

替换为:“'another_directory / ^ 1'”

(没有引号,但前导空格很重要)

答案 3 :(得分:0)

如果我使用的是RegexBuddy的GREP工具,我会这样做:

匹配模式:

^(data file\s{3})(file_n\.data)$

选项:

^ $在换行符时匹配。

替换模式:

\1'another_directory/\2'

我认为UltraEdit的工作原理基本相同。