gpt4 book ai didi

javascript - 有没有办法获得分组结果以及所有匹配的正则表达式字符串

转载 作者:行者123 更新时间:2023-11-28 07:47:47 25 4
gpt4 key购买 nike

我想获取正则表达式匹配的结果以及组匹配

输入字符串:

  var str= ' application [<!ENTITY % common  SYSTEM "../common.ent">\n%common;] <!ENTITY % name PUBLIC "public_ID" "URI">'

正则表达式:

   var rg = /<!ENTITY\s+[\%|\&]?\s*(\S+)\s+(PUBLIC|SYSTEM)\s+"([^"]*)"\s*(?:"([^"]*)"\s*)?>/g

正在申请

str.match(rg)

仅结果为匹配字符串:

["<!ENTITY % common  SYSTEM "../common.ent">", "<!ENTITY % name PUBLIC "public_ID" "URI">"]

如何获取分组匹配结果?

例如,在这种情况下,我期待这样的事情:

[{
matched : "<!ENTITY % common SYSTEM "../common.ent">",
groups : ["common", "SYSTEM", "../common.ent"]
}, {
matched : "<!ENTITY % name PUBLIC "public_ID" "URI">",
groups : ["name", "PUBLIC", "public_ID", "URI"]
}]

编辑:只是有点好奇 regex101.com 是如何做到的显示此enter image description here

引用号:http://regex101.com/r/oU0qN5/1

最佳答案

在一次调用中不可能在 JavaScript 中,你必须在循环中调用它

var str= ' application [<!ENTITY % common  SYSTEM "../common.ent">\n%common;] <!ENTITY % name PUBLIC "public_ID" "URI">';
var rg = /<!ENTITY\s+[\%|\&]?\s*(\S+)\s+(PUBLIC|SYSTEM)\s+"([^"]*)"\s*(?:"([^"]*)"\s*)?>/g;

var result;
var results = [];
while(result = rg.exec(str)){
results.push(result);
}

// this part and they join is just to display the result
document.getElementById("result").innerText = results.join("@@@@");
document.getElementById("result").innerHTML = document.getElementById("result").innerHTML.replace("@@@@","<br/>");

// tested with Win7 Chrome 38+
<div id="result"></div>

不是你想要的结构,但像这样它可以在 Javascript 中完成

关于javascript - 有没有办法获得分组结果以及所有匹配的正则表达式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27223036/

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