我正在使用Node.js读取我们从客户那里获得的工作场所订单的降价文件。我将文件分成行的数组,并对每一行执行检查以查看它是什么(h1、h3、task等),但在使我的RegExps正常工作时遇到了很多问题。以下是我到目前为止拥有的代码:
var filesystem = require('fs');
let content;
let missingItems = [];
filesystem.readFile('orders.md', 'utf8', (err, res) => {
let content = res;
let lines = content.split('\n');
lines.forEach(line => {
if(line.match(/#{1}/)){
console.log('Store Name: ', line);
};
});
});
但是,此代码返回所有h1和h3行。我在网上看到使用RegExp 101时,问题是我的RegExp与h3线路匹配了3次,与h1线路匹配了一次。
如何编写对h1和h3行都不返回true的正则表达式?我不明白为什么当我显式地说匹配{1} (一次)时,这个匹配了三次
这是我一直在测试我的表达式的测试区域和一些我试图测试的示例文本:RegExp101
发布于 2018-06-29 03:51:08
您正在询问该行是否(至少)包含一个带有该regex的#,这两行都包含。你可以使用负向先行:
^#(?!#)
^
的意思是“行的开始”,然后是文字井号,然后是以(?!pattern)
形式出现的负数前视,所以我们向前看是为了看不到另一个井号。
更简单的方法是测试首字母#和后面的空格\s
^#\s
https://stackoverflow.com/questions/51090295
复制相似问题