【发布时间】:2019-02-09 15:37:19
【问题描述】:
我正在尝试将正则表达式与文件中的某些数据进行匹配,但是即使匹配明显存在于数据中,匹配函数也会返回 null。
我在RegExr 上尝试了相同的数据和正则表达式,结果显示匹配。
下面是代码
var fs = require('fs');
try {
var data = fs.readFileSync('File.txt', 'utf8');
data = data.toString();
var regex = /^(hi|hI|Hi|HI)\s[^dD].*?$/gm;
var result = data.match(regex);
} catch(e) {
console.log('Error:', e.stack);
}
这些是文件的内容
Hi Alex how are you doing
hI dave how are you doing
Good by Alex
hidden agenda
Alex greeted Martha by saying Hi Martha
我在 RegExr 上使用了相同的数据,它将第一行显示为匹配项。但是当我在我的机器上运行上面的代码时,结果变量仍然为空。
有什么我想念的吗?
以下是我在 vscode 中调试代码时的一些屏幕截图。
编辑。 JSON.stringify 结果
我在 cmd 上运行程序,令人震惊的是,字符串前面有一个空格。
【问题讨论】:
-
仅供参考,你的正则表达式也可以写成
/^hi\s[^d].*/gmi -
您的代码对我来说很好用。你怎么知道
result是null?您发布的代码中没有任何内容检查result的值。你的实际代码中有console.log()吗? -
@nologin 绝对没有区别;正则表达式文字没有任何问题。
-
可能你加载了错误的文件!
-
你能不能
console.log(JSON.stringify(data))告诉我们你得到了什么? (请不要截图)
标签: javascript node.js regex