Javascript 捕获正则表达式模式不适用于多行字符串
我试图读取包含多行的字符串,\n该字符串具有以下模式:Javascript 捕获正则表达式模式不适用于多行字符串,javascript,regex,Javascript,Regex,我试图读取包含多行的字符串,\n该字符串具有以下模式: Total : 30 ================ Loaded : 27 Loading : 0 Failed : 3 Done.. time taken : 3.49 seconds. ============= 2020-03-08 15:39:26 包含所用时间的行有时可以用毫秒、秒或分钟表示。 所以我需要捕获单元之前的数字,单元本身,以及由Failed表示的数字 我能够提取时间持续时间加上单位没有
Total : 30
================
Loaded : 27
Loading : 0
Failed : 3
Done.. time taken : 3.49 seconds.
=============
2020-03-08 15:39:26
包含所用时间的行有时可以用毫秒、秒或分钟表示。
所以我需要捕获单元之前的数字,单元本身,以及由Failed表示的数字
我能够提取时间持续时间加上单位没有任何问题。也许是因为他们都在同一条线上
let matches = /taken\D+([\d\.]+)\s+(\w+)/g.exec(trace);
matches[1]; // 3.49
matches[2]; // seconds
但是当我试图提取失败的数字时,正则表达式不起作用
/Failed\s+:\s(\d+).*?taken\D+([\d\.]+)\s+(\w+)/g
/Failed\s+:\s(\d+).*?taken\D+([\d\.]+)\s+(\w+)/gm
/Failed\s+:\s(\d+)[.\n\r]*?taken\D+([\d\.]+)\s+(\w+)/g
这些都不管用。
我知道我可以通过在执行正则表达式之前删除所有新行字符\n来解决问题,但我想知道我的部件犯了什么错误
let trace=Total:30\n
+======================\n
+已加载:27\n
+正在加载:0\n
+失败:3\n
+\n
+完成。。所用时间:3.49秒。\n
+================\n
+ 2020-03-08 15:39:26;
let pattern=/Failed\s+:\s+\d+[\n\r.]*?take\d+[\d\.]+\s+\w+/gm;
让matches=pattern.exectrace;
让failedCount=匹配[1];//应该是3
让timetake=匹配[2];//应该是3.49
让timeUnit=匹配[3];//应该是秒您可以使用s来创建。表达式包括\n。像这样:
let trace=Total:30\n
+======================\n
+已加载:27\n
+正在加载:0\n
+失败:3\n
+\n
+完成。。所用时间:3.49秒。\n
+================\n
+ 2020-03-08 15:39:26;
让pattern=newregexpfailed\\s+:\\s+\\d++.*take\\d+[\\d\.]+\\s+\\w+,s;
让matches=pattern.exectrace;
让failedCount=匹配[1];//应该是3
让timetake=匹配[2];//应该是3.49
让timeUnit=匹配[3];//应该是几秒钟
console.logfailedCount,时间,时间单位;我只是将s添加到regex/……/gs中,这很有效。谢谢你的好意。我将它包装在RegExp对象中,因为出于某种原因,这里的剪接不支持在末尾添加s,因为这里的g看起来是多余的。因为您不需要查找此表达式的多个外观