正则表达式不起作用.没有匹配项



我想尝试提取此字符串中的最后下载速度。我知道它后面是一个摘要。

这是我目前的正则表达式:

/.*s(d+.d+s[kB|MB|GB]/s)nSUMMARY.*/

这是字符串:

 7% [###                                           ] ETA:  0:00:12   1.99 MB/s
11% [#####                                         ] ETA:  0:00:08   2.87 MB/s
16% [#######                                       ] ETA:  0:00:06   3.39 MB/s
20% [#########                                     ] ETA:  0:00:05   4.04 MB/s
24% [##########                                    ] ETA:  0:00:04   4.61 MB/s
28% [#############                                 ] ETA:  0:00:03   5.41 MB/s
32% [##############                                ] ETA:  0:00:03   5.47 MB/s
36% [################                              ] ETA:  0:00:03   5.26 MB/s
40% [##################                            ] ETA:  0:00:02   5.26 MB/s
44% [####################                          ] ETA:  0:00:02   5.62 MB/s
49% [######################                        ] ETA:  0:00:02   5.88 MB/s
53% [########################                      ] ETA:  0:00:01   6.33 MB/s
57% [#########################                     ] ETA:  0:00:01   6.49 MB/s
61% [###########################                   ] ETA:  0:00:01   6.87 MB/s
65% [#############################                 ] ETA:  0:00:01   7.17 MB/s
69% [###############################               ] ETA:  0:00:01   7.44 MB/s
73% [#################################             ] ETA:  0:00:00   7.71 MB/s
77% [##################################            ] ETA:  0:00:00   8.10 MB/s
81% [####################################          ] ETA:  0:00:00   8.37 MB/s  
86% [######################################        ] ETA:  0:00:00   8.78 MB/s  
90% [########################################      ] ETA:  0:00:00   9.04 MB/s
94% [##########################################    ] ETA:  0:00:00   9.39 MB/s  
99% [############################################  ] ETA:  0:00:00   8.99 MB/s 
100% [#############################################] Time: 0:00:02   9.02 MB/s 
SUMMARY: [32mSuccessfully downloaded[0m: 1

使用积极的前瞻来匹配摘要之前的最后一个文件大小。

(?=s+SUMMARY)

注意:不要忘记使用正则表达式末尾的 m 标志启用多行匹配。

var text = document.getElementById('progress-log').innerHTML.trim();
var regex = /d+.d{2} [kMGTP]B/s(?=s+SUMMARY)/m;
console.log('Final size:', text.match(regex)[0]);
.as-console-wrapper { top: 0; max-height: 100% !important; }
#progress-log { display: none; }
<pre id="progress-log">
 7% [###                                           ] ETA:  0:00:12   1.99 MB/s
11% [#####                                         ] ETA:  0:00:08   2.87 MB/s
16% [#######                                       ] ETA:  0:00:06   3.39 MB/s
20% [#########                                     ] ETA:  0:00:05   4.04 MB/s
24% [##########                                    ] ETA:  0:00:04   4.61 MB/s
28% [#############                                 ] ETA:  0:00:03   5.41 MB/s
32% [##############                                ] ETA:  0:00:03   5.47 MB/s
36% [################                              ] ETA:  0:00:03   5.26 MB/s
40% [##################                            ] ETA:  0:00:02   5.26 MB/s
44% [####################                          ] ETA:  0:00:02   5.62 MB/s
49% [######################                        ] ETA:  0:00:02   5.88 MB/s
53% [########################                      ] ETA:  0:00:01   6.33 MB/s
57% [#########################                     ] ETA:  0:00:01   6.49 MB/s
61% [###########################                   ] ETA:  0:00:01   6.87 MB/s
65% [#############################                 ] ETA:  0:00:01   7.17 MB/s
69% [###############################               ] ETA:  0:00:01   7.44 MB/s
73% [#################################             ] ETA:  0:00:00   7.71 MB/s
77% [##################################            ] ETA:  0:00:00   8.10 MB/s
81% [####################################          ] ETA:  0:00:00   8.37 MB/s  
86% [######################################        ] ETA:  0:00:00   8.78 MB/s  
90% [########################################      ] ETA:  0:00:00   9.04 MB/s
94% [##########################################    ] ETA:  0:00:00   9.39 MB/s  
99% [############################################  ] ETA:  0:00:00   8.99 MB/s 
100% [#############################################] Time: 0:00:02   9.02 MB/s 
SUMMARY: [32mSuccessfully downloaded[0m: 1
</pre>

Q(?=u( 匹配后跟 u 的 q,而不使 u 成为匹配的一部分。正前瞻构造是一对括号,左括号后跟问号和等号。— (来源(

您的正则表达式中存在一些问题。这是一个固定的:

/s(d+.d+s+(kB|MB|GB)/s)[snr]+SUMMARY/

var str = document.querySelector("pre").textContent;
console.log(str.match(/s(d+.d+s+(?:kB|MB|GB)/s)[snr]+SUMMARY/));
<pre>
7% [###                                          ] ETA:  0:00:10   2.27 MB/s
 11% [#####                                        ] ETA:  0:00:07   2.93 MB/s
 15% [#######                                      ] ETA:  0:00:05   3.73 MB/s
 19% [########                                     ] ETA:  0:00:04   4.34 MB/s
 23% [##########                                   ] ETA:  0:00:03   5.00 MB/s
 27% [############                                 ] ETA:  0:00:03   5.61 MB/s
 32% [##############                               ] ETA:  0:00:03   5.56 MB/s
 36% [################                             ] ETA:  0:00:02   5.77 MB/s
 40% [##################                           ] ETA:  0:00:02   5.80 MB/s
 44% [####################                         ] ETA:  0:00:02   6.00 MB/s
 48% [#####################                        ] ETA:  0:00:02   6.34 MB/s
 52% [#######################                      ] ETA:  0:00:01   6.74 MB/s
 56% [#########################                    ] ETA:  0:00:01   7.01 MB/s
 60% [###########################                  ] ETA:  0:00:01   7.30 MB/s
 64% [#############################                ] ETA:  0:00:01   7.69 MB/s
 68% [###############################              ] ETA:  0:00:01   8.11 MB/s
 73% [#################################            ] ETA:  0:00:00   8.50 MB/s
 77% [###################################          ] ETA:  0:00:00   8.75 MB/s
 82% [#####################################        ] ETA:  0:00:00   8.25 MB/s
 86% [#######################################      ] ETA:  0:00:00   8.53 MB/s
 91% [#########################################    ] ETA:  0:00:00   8.89 MB/s
 95% [##########################################   ] ETA:  0:00:00   9.09 MB/s
 99% [############################################ ] ETA:  0:00:00   9.10 MB/s
100% [#############################################] Time: 0:00:02   9.11 MB/s
SUMMARY:
</pre>

请注意:

  • 有不止一行新行,谨慎的做法是不要在这里排除其他类型的空间,并允许r
  • (A或B(你做(A|B),而不是[A|B]
  • 没有理由让.*结束

您是否尝试过将第一个.*替换为.*?,将第二个.*替换为[sS].*?这应该适用于多行匹配。

尝试:/\d+

.\d+\s[MGK]B/s\SUMMARY/- 在"SUMMARY"之前有两个换行符。

相关内容

最新更新