我有這個表達式:匹配的一切,但一個特定的單詞
.*js/[\bpackaged\b]+\.js
在它從下面的列表匹配 'packaged.js' 的時刻:
- JS/foo.js
- JS/bar.js
- JS/suitcase.js
- JS/bootstrap.js
- JS/packaged.js
我怎樣才能反轉這一點,以便它所有的其他比賽除了「packaged.js」?
我有這個表達式:匹配的一切,但一個特定的單詞
.*js/[\bpackaged\b]+\.js
在它從下面的列表匹配 'packaged.js' 的時刻:
我怎樣才能反轉這一點,以便它所有的其他比賽除了「packaged.js」?
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
這你想要做什麼:
.*js/(?!packaged\.js).+\.js
請注意,您的模式也匹配「js/ppppppp.js」。 –