Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl搜索替换为负前瞻_Regex_Perl_Bash - Fatal编程技术网

Regex Perl搜索替换为负前瞻

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\/[^”]+(?使用

这件事快把我逼疯了。尝试使用perl执行命令行搜索/替换。本质上,我想去掉所有不以XLS(X)结尾的文件路径,但它们必须以字符串NATIVE开头。提前谢谢

命令 test.txt 预期产量 实际产量
您可以使用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"