2015-02-08 79 views
2

我正在使用BBEdit中的制表符分隔文件。该文件是这样的:BBEdit GREP查找替换

00:15:50;11  text1  text2 
00:35:17;03  text4  text5 
00:35:20;03  text6 
00:35:20;22  text7 

基本上,它具有: 时间码选项卡文本选项卡文本等

我要带时间码的第二行和第一行后添加。我希望它看起来像这样:

FIND:

00:15:50;11  00:35:17;03  text1  text2 
00:35:17;03  00:35:20;03  text4  text5 
00:35:20;03  00:35:20;22  text6 
00:35:20;22  text7 

我用这段代码GREP试图

`(?-m)([0-9][0-9][; :][0-9][0-9][; :][0-9][0-9][; :][0-9][0-9])(.*)\r([0-9][0-9][; :][0-9][0-9][; :][0-9][0-9][; :][0-9][0-9])` 

REPLACE:

'\1\t\3\2\r\3' 

我的问题它只是搜索并替换其他每一行。如果我做一个查找/替换所有,它看起来像这样:

00:15:50;11  00:35:17;03  text1  text2 
00:35:17;03  text4  text5 
00:35:20;03  00:35:20;22  text6 
00:35:20;22  text7 

它跳过其他每一行。我想在几百个文件中进行搜索/替换。我想知道是否有什么我可以改变,以确保它得到每一行。

谢谢。

回答

1

我把你的正则表达式修改了一下。

诀窍是不匹配行开头的时间码。所以,请使用Positive Lookbehind

(?<=([0-9][0-9][; :][0-9][0-9][; :][0-9][0-9][; :][0-9][0-9])) /*lookbehind to see if timecode exists, but dont match. 
                   But, the use of parenthesis makes it the first capture group.*/ 
(.*) 
\r 
([0-9][0-9][; :][0-9][0-9][; :][0-9][0-9][; :][0-9][0-9]) 

之前,

enter image description here

后,

enter image description here