我正在尝试这样做:
render(argv,function() {
var fileHandle = argv.output + '/docu.html';
var regex_ca_id = new RegExp('[A-Za-z1-9]{16}#[A-Za-z1-9]{5}',"g");
var rd = readline.createInterface({
input: fs.createReadStream(fileHandle),
output: process.stdout,
terminal: false
});
rd.on('line', function(line) {
if(regex_ca_id.test(line)) {
console.log('Debug: '+regex_ca_id.test(line)+
' '+regex_ca_id.exec(line)+' '+line);
}
rd.close();
process.stdin.destroy();
});
在html文件(“fileHandle”见上文)中,其中包含以下行:
<p class="img-container"><img src="UU4GBVJyst5kqS8O#732F4-50" alt="I am a picture" title="An Image"></p>
<p>Dies ist <a href="UU4GBVJyst5kqS8O#732F4-50" title="An Image">ein Beispiel</a> für einen Referenz-Link.</p>
生成此输出,该输出由console.log()行发出:
Debug: false UU47GZJyst5kqS8O#732F4 <p class="img-container"><img src="UU4GBVJyst5kqS8O#732F4-50" alt="I am a picture" title="An Image"></p>
Debug: false UU47GZJyst5kqS8O#732F4 <p>Dies ist <a href="UU4GBVJyst5kqS8O#732F4-50" title="An Image">ein Beispiel</a> für einen Referenz-Link.</p>
输出是我没想到的。 regex_ca_id.test(line)计算结果为true,因此if结构的主体开始。现在,console.log中的相同语句的计算结果为false,之后使用的上一个RegExp对象的exec()返回成功匹配的字符串。
其他用法:
var result = regex_ca_id.exec(line);
rd.on块中的将被赋值为null。
这看起来与我不一致,谢谢你帮我理解这种行为。
斯蒂芬