0

我想看,文件夹的变化:

  • 测试/index.js
  • te3st/index.js

但没有变化

  • te2st/index.js 不是任何 te NUMBER st/index.js

我使用 chokidar 并从这里获得灵感:chokidar

可以使用正则表达式ignored: ignored: /^.*\b(?:(?!te2st\/index\.js)\w)+\b$/,但我的正则表达式没有像预期的那样工作(正则表达式如何在任何地方排除特定字符或字符串)。

这个正则表达式在这里工作: https ://regex101.com/r/XnKYcf/1/

var chokidar = require('chokidar');
var watcher = chokidar.watch('/home/replays/0.0.24/t*t/index.js',
{ignored: /^.*\b(?:(?!te2st\/index\.js)\w)+\b$/, persistent: true});
watcher
  .on('add', function(path) {console.log('File', path, 'has been added  ');})
  .on('change', function(path) {console.log('File', path, 'has been changed  ');})
  .on('unlink', function(path) {console.log('File', path, 'has been removed  ');})
  .on('error', function(error) {console.error('Error happened', error);})

那是广告否定定义在这里还不能正常工作。通过正则表达式允许会更实用且更易于阅读。这可能吗?

4

1 回答 1

0

这个答案真的不使用忽略属性。它首先允许几乎任何东西,然后再过滤。也许作为具有忽略属性的解决方案更容易阅读,我无法用它来实现它。

var chokidar = require('chokidar');

var watcher = chokidar.watch('/home/x/0.24/t*t/index.js',{ignored: /$^/, persistent: true}); // /$^/ is match nothing

watcher
  .on('add', function(path) {
      if(path.match(/te(|3)st\/index\.js/)){
        console.log('File', path, 'te(||3)st found :) ');
      }
      
})

输出$ node /home/x/0.0.24/file-watcher.js

File /home/x/0.0.24/te3st/index.js te(||3)st found :) 
File /home/x/test/index.js te(||3)st found :) 
于 2021-05-20T13:31:22.220 回答