我试图匹配WORD中的最后一个字符。
WORD是一系列非空白字符 ' [^ \ n \ r \ t \ t \ f]',或匹配^ $的空行。
我这样做的表达是: " [^ \ n \ t \ r \ n] \(?:[\ $ \ n \ t \ r \ n] \)"
正则表达式匹配空白字符或行尾的非空白字符。
但我不知道如何阻止它从结果中排除以下空白字符,以及为什么它似乎没有捕捉到行尾之前的字符。
使用字符串"嗨世界!",我希望:" i"和"!"被捕获。
相反,我得到:"我"。
我可以采取哪些措施来解决这个问题?
答案 0 :(得分:3)
请注意readFolder() {
dialog.showOpenDialog({ properties: ['openDirectory'] }, (dirFiles) => {
console.log(dirFiles);
if (dirFiles === undefined) {
console.log('No file ');
return;
}
const pathName = dirFiles[0];
fs.readdir(pathName, (err, files) => {
files.forEach(file => {
fs.readFile(file, 'utf-8', (err, data) => {
if (err) {
console.log(`something went wrong ${err}`);
} else {
console.log(data);
}
});
});
});
});
}
中的非捕获组(?:...)
仍然匹配(消耗)空白字符(因此,它成为匹配的一部分)并且在结束时不匹配作为[^ \n\t\r\f](?:[ \$\n\t\r\f])
符号的字符串不是字符类中的字符串结束锚,它被解析为文字$
符号。
您可以使用
$
请参阅regex demo
\S(?!\S)
匹配非空白字符,后面没有非空白字符(由于\S
负向前导)。