我有这个正则表达式:
.*js/[\bpackaged\b]+\.js
目前它与下面列表中的'packaged.js'匹配:
如何将其反转以使其与“packaged.js”之外的所有其他内容匹配?
答案 0 :(得分:3)
kent$ echo " js/foo.js
js/bar.js
js/suitcase.js
js/bootstrap.js
js/packaged.js
"|grep -P '.*js/.*(?<!packaged).js'
js/foo.js
js/bar.js
js/suitcase.js
js/bootstrap.js
示例只是显示表达式,如果你真的使用grep,-v可以使它更容易。
--- 根据glibdud的评论更新 ---
注意输入中的最后5行:
kent$ echo " js/foo.js
js/bar.js
js/suitcase.js
js/bootstrap.js
js/packaged.js
js/foo_packaged.js
js/packaged_bar.js
js/foo_packaged_bar.js
js/_packaged.js
js/packaged_.js"|grep -P '.*js/(.+packaged\.js|.+(?<!packaged)\.js)'
输出:
js/foo.js
js/bar.js
js/suitcase.js
js/bootstrap.js
js/foo_packaged.js
js/packaged_bar.js
js/foo_packaged_bar.js
js/_packaged.js
js/packaged_.js
答案 1 :(得分:0)
这样做你想要的:
.*js/(?!packaged\.js).+\.js