开发者

Matching everything but a specific word

开发者 https://www.devze.com 2023-04-06 19:33 出处:网络
I\'ve got this regex: .*js/[\\bpackaged\\b]+\\.js At the moment it matches \'packaged.js\' from the list below:

I've got this regex:

.*js/[\bpackaged\b]+\.js

At the moment it matches 'packaged.js' from the list below:

  • js/foo.js
  • js/bar.js
  • js/suitcase.js
  • js/bootstrap.js
  • js/packaged.js

How can I invert this so that it matches all the others except开发者_运维技巧 for '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

the example is just showing the expression, if you really use grep, -v could make it easier.

--- updated based on glibdud's comment ---

notice the last 5 lines in input:

 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)'   

output:

    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


This does what you want:

.*js/(?!packaged\.js).+\.js
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号