我对regex很熟悉,但似乎我不太擅长在sublime text 2中做regex,我认为应该工作的似乎是匹配的,但太贪婪。
我有一个文件,里面有很多mv
命令,就像下面的那个,我想在上面添加一个额外的命令来创建文件要移动到的目录。因此,对于下面的示例,mkdir
命令将是mkdir --parents --verbose '/path/to/dir2';
mv --no-clobber --verbose '/path/to/dir1/file1.zip' '/path/to/dir2/file2.zip';
我尝试了这个正则表达式,我确信它会非常好,但它匹配整行,而不仅仅是我想匹配的部分。
Sublime regex search
mv --no-clobber --verbose '(.*?).zip' '(.*?)/(.*?).zip';
Sublime正则表达式替换
mkdir --parents --verbose '$2';
mv --no-clobber --verbose '$1.zip' '$2/$3.zip';
编辑:只是为了澄清第一个(.*?)
匹配整行,随后的(.*?)
不匹配。
您有几个不需要的捕获组,并且没有必要使用.*?
。
您可以使用以下正则表达式进行搜索:
mv --no-clobber --verbose '[^']+' '(.+)/[^/.]+.zip';
并替换为:
$0nmkdir --parents --verbose '$1';
这里$0
是mv
命令完全匹配的反向引用。
输出:
mv --no-clobber --verbose '/path/to/dir1/file1.zip' '/path/to/dir2/files2.zip';
mkdir --parents --verbose '/path/to/dir2';
您也可以使用K
(match reset)搜索:
mv --no-clobber --verbose '[^']+' '(.+)/[^/.]+.zip';K
并替换为:
nmkdir --parents --verbose '$1';