【发布时间】:2021-01-25 11:54:46
【问题描述】:
我想获取文本文件中第一个空行之前的所有内容。
我找到了working regex,但是当我尝试在 Javascript 中完成相同的操作时,它不起作用。
(正在加载文件内容)
async function readDir() {
return new Promise((resolve,reject) => {
fs.readdir('./content', (err, files) => {
if(err) { reject(err) }
resolve(files)
});
});
}
readDir().then((files) => {
files.forEach(file => {
var filepath = path.resolve('./content/'+file)
if(filepath.endsWith('.txt')) {
if(fs.statSync(filepath)["size"] > 0) {
let data = fs.readFileSync(filepath).toString();
let reg = /^[\s\S]*?(?=\n{2,})/;
console.log(data.match(reg)) //returns null
}
}
});
})
编辑:
正如 O. Jones 所指出的,问题在于行尾。我的正则表达式没有在我的文件中出现\r\n 行结尾。
目前,这个似乎可以完成这项工作:/^[\s\S]*?(?=(\r\n\r\n?|\n\n))/m
【问题讨论】:
-
您的文件的具体内容是什么?您确定有两个换行符紧随其后(即在空行中没有其他空格,包括
\r)? -
正则表达式的链接包括 txt 文件的确切内容
-
那么不,它也适用于 javascript。请注意,将文件复制粘贴到文本区域会更改行尾。
-
我试过这个,它对我有用。你对文件内容做错了
-
我通过 Visual Studio Code 文件资源管理器创建了文本文件,并从这里复制粘贴内容:gutenberg.org/files/36/36-0.txt 当我对文件内容进行 JSON.stringify 时,我得到:"The War世界\r\n10-10-2020\r\n\r\nI.\r\n战争前夜。\r\n\r\n没有人会相信十九世纪的最后几年\ r\n这个世界正被比人类更伟大的智慧\r\n 和他自己的智慧一样敏锐而密切地注视着;当人们忙于\r\n他们自己...对不起,我有不知道它可能是什么..
标签: javascript node.js regex fs end-of-line