Regex Perl搜索替换为负前瞻
这件事快把我逼疯了。尝试使用perl执行命令行搜索/替换。本质上,我想去掉所有不以XLS(X)结尾的文件路径,但它们必须以字符串NATIVE开头。提前谢谢 命令 test.txt 预期产量 实际产量Regex Perl搜索替换为负前瞻,regex,perl,bash,Regex,Perl,Bash,这件事快把我逼疯了。尝试使用perl执行命令行搜索/替换。本质上,我想去掉所有不以XLS(X)结尾的文件路径,但它们必须以字符串NATIVE开头。提前谢谢 命令 test.txt 预期产量 实际产量 您可以使用lookbehinds尝试此模式: cat test.txt | perl -ne 's/"NATIVE\/[^"]+(?<!\.XLS)(?<!\.XLSX)"/""/g; print;' cat test.txt | perl-ne的/“NATIVE\/[^”]+(?使用
您可以使用lookbehinds尝试此模式:
cat test.txt | perl -ne 's/"NATIVE\/[^"]+(?<!\.XLS)(?<!\.XLSX)"/""/g; print;'
cat test.txt | perl-ne的/“NATIVE\/[^”]+(?使用perl一行程序
perl -pe 's/"NATIVE[^"]+(?<!\.XLSX)(?<!\.XLS)"/""/g;' test.txt
您希望在此处改用负回溯
cat test.txt | perl -ne 's/"NATIVE[^"]+(?<!\.XLS|XLSX)"/""/g; print;'
以下是我的尝试模式(?无需查找:
cat test.txt | perl-ne的/“NATIVE(?![^”]+XLSX?”)[^”]*“/”/g;print;“
在那里!看起来[^”]+捕获了字段末尾的所有内容,因此我的前瞻性不匹配。谢谢!!
"Blah","NATIVE/001/FOO.XLS","Blah"
"Blah","NATIVE/001/BAR.XLSX","Blah"
"Blah","NATIVE/001/FOO.DOC","Blah"
"Blah","NATIVE/001/FOO.PPT","Blah"
"Blah","NATIVE/001/FOO.PPTX","Blah"
"Blah","NATIVE/001/FOO.PNG","Blah"
cat test.txt | perl -ne 's/"NATIVE\/[^"]+(?<!\.XLS)(?<!\.XLSX)"/""/g; print;'
cat test.txt | perl -ne 's/"NATIVE\/[^"]++(?<!\.XLS)(?<!\.XLSX)/"/g; print;'
perl -pe 's/"NATIVE[^"]+(?<!\.XLSX)(?<!\.XLS)"/""/g;' test.txt
perl -pe 's/"\K(NATIVE[^"]+)/$1 =~ m{XLSX?$} ? $1 : ""/eg;' test.txt
cat test.txt | perl -ne 's/"NATIVE[^"]+(?<!\.XLS|XLSX)"/""/g; print;'
cat test.txt | perl -ne 's/(?<=")NATIVE[^"]+(?<!\.XLS|XLSX)(?=")//g; print;'
"Blah","NATIVE/001/FOO.XLS","Blah"
"Blah","NATIVE/001/BAR.XLSX","Blah"
"Blah","","Blah"
"Blah","","Blah"
"Blah","","Blah"
"Blah","","Blah"