gpt4 book ai didi

javascript - 如何从一个长字符串中获取多个子字符串

转载 作者:行者123 更新时间:2023-11-29 10:10:47 24 4
gpt4 key购买 nike

我有一个很长的字符串,如下所示:

var tStr = "googletag.defineSlot('Lorem1', [300, 100], 'div-ad-1430201576110-0');
googletag.defineSlot('Lorem2', [300, 100], 'div-ad-1442774220958-0');
googletag.defineSlot('Lorem3', [300, 100], 'div-ad-1448024965037-0');
googletag.defineSlot('Lorem4', [290, 60], 'div-ad-1429688274462-0');
googletag.defineSlot('Lorem5', [300, 200], 'div-ad-1448279284710-0');
googletag.defineSlot('Lorem6', [728, 90], 'div-ad-1389610933954-2');
googletag.defineSlot('Lorem7', [728, 90], 'div-ad-1389610933954-4');
googletag.defineSlot('Lorem8', [300, 250], 'div-ad-1389610933954-0');
googletag.defineSlot('Lorem9', [300, 250], 'div-ad-1448278717664-0');
googletag.defineSlot('Lorem10',[300, 250] 'div-ad-1425381569546-1');
googletag.defineOutOfPageSlot('Lorem11','div-ad-1424524422308-0-oop1');
googletag.defineOutOfPageSlot('Lorem12','div-ad-1424524422308-0-oop2');
googletag.defineOutOfPageSlot('Lorem13','div-ad-1389610933954-0-oop4');
googletag.defineOutOfPageSlot('Lorem14','div-ad-1389610933954-0-oop5');
googletag.defineOutOfPageSlot('Lorem15','div-ad-1389610933954-0-oop6');";

我需要从这个字符串中获取在 googletag.defineSlot() 中传递的所有最后一个元素。例如对于上面的字符串,我需要得到一个数组,它应该有 ['div-ad-1430201576110-0','div-ad-1442774220958-0','div-ad-1448024965037-0','div -ad-1429688274462-0','div-ad-1448279284710-0','div-ad-1389610933954-2','div-ad-1389610933954-4','div-ad-1448278717664-0','div -ad-1425381569546-1']

所以我正在尝试类似的事情:

var myregexp = /googletag.defineSlot+/g;
var match = myregexp.exec(x);
console.log(match);

但我知道正则表达式模式是错误的。我正在寻找的正确方法或模式。

提前致谢

最佳答案

假设您可以在最后一个 '...' 中依赖 divdiv-ad,这是您可以使用的代码和正则表达式:

/googletag\.defineSlot.*?'(div[^']*)'/g

参见 regex demo

它匹配:

  • googletag\.defineSlot - 字面匹配 googletag.defineSlot
  • .*? - 惰性点匹配结构(这里很好用,因为字符串很短)匹配尽可能少的除换行符之外的任何字符
  • ' - 一个撇号
  • (div[^']*) - 捕获组 1 匹配 div 后跟任何字符,但 '
  • ' - 文字 '

如果在单引号内的最后一个参数中可以有任何值,请使用

googletag\.defineSlot.*?'([^']*)'\);

参见 another demo

var re = /googletag\.defineSlot.*?'([^']*)'\);/g;
var str = 'googletag.defineSlot(\'Lorem1\', [300, 100], \'div-ad-1430201576110-0\');\ngoogletag.defineSlot(\'Lorem2\', [300, 100], \'div-ad-1442774220958-0\');\ngoogletag.defineSlot(\'Lorem3\', [300, 100], \'div-ad-1448024965037-0\');\ngoogletag.defineSlot(\'Lorem4\', [290, 60], \'div-ad-1429688274462-0\');\ngoogletag.defineSlot(\'Lorem5\', [300, 200], \'div-ad-1448279284710-0\');\ngoogletag.defineSlot(\'Lorem6\', [728, 90], \'div-ad-1389610933954-2\');\ngoogletag.defineSlot(\'Lorem7\', [728, 90], \'div-ad-1389610933954-4\');\ngoogletag.defineSlot(\'Lorem8\', [300, 250], \'div-ad-1389610933954-0\');\ngoogletag.defineSlot(\'Lorem9\', [300, 250], \'div-ad-1448278717664-0\');\ngoogletag.defineSlot(\'Lorem10\',[300, 250] \'div-ad-1425381569546-1\');\ngoogletag.defineOutOfPageSlot(\'Lorem11\',\'div-ad-1424524422308-0-oop1\');\ngoogletag.defineOutOfPageSlot(\'Lorem12\',\'div-ad-1424524422308-0-oop2\');\ngoogletag.defineOutOfPageSlot(\'Lorem13\',\'div-ad-1389610933954-0-oop4\');\ngoogletag.defineOutOfPageSlot(\'Lorem14\',\'div-ad-1389610933954-0-oop5\');\ngoogletag.defineOutOfPageSlot(\'Lorem15\',\'div-ad-1389610933954-0-oop6\');';
var m;
var ar = [];
while ((m = re.exec(str)) !== null) {
ar.push(m[1]);
}
document.getElementById('result').innerHTML = JSON.stringify(ar, 0, 4);
<pre id="result"></pre>

关于javascript - 如何从一个长字符串中获取多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com