Javascript 组合.split()和.match()结果
我试图创建一个数组,其中包含传递正则表达式和子字符串的字符串子字符串。例如:Javascript 组合.split()和.match()结果,javascript,ecmascript-6,Javascript,Ecmascript 6,我试图创建一个数组,其中包含传递正则表达式和子字符串的字符串子字符串。例如: ['stringpart1'、'match1'、'stringpart2'、'match2'、'stringpart3'] 这是我的正则表达式:newregexp(“,“g”) 我使用的页面源字符串大致如下: "<html>\n <meta class='a'/>\n <meta class='b'/>\n <div>\n <
['stringpart1'、'match1'、'stringpart2'、'match2'、'stringpart3']
这是我的正则表达式:newregexp(“,“g”)代码>
我使用的页面源字符串大致如下:
"<html>\n
<meta class='a'/>\n
<meta class='b'/>\n
<div>\n
<p>test</p>\n
</div>\n
</html>"
编辑-我的解决方案基于编辑前的原始问题。我会修改,但我实际上认为,在对问题进行编辑后,詹姆斯·伊曼农的答案是正确的,我提出的任何问题都只是他所拥有的东西的翻版。
根据您拥有的正则表达式,您希望能够做的似乎是选择一个特定的html标记,并搜索您的内容中出现的所有标记,然后将开始标记和结束标记以及内容输出到一个输出数组中
有一种方法可以实现这一点:
const text=“content>content”;
const tag=“div”;
const re=new RegExp(“()(.*?)”,“g”);
设final=[];
让matches=text.match(re).map((m)=>m.replace(/>(.)/,“>@@@1”)
.replace(/\编辑-我的解决方案是基于编辑前的原始问题。我会修改,但实际上我认为在编辑问题后,詹姆斯·伊曼农的答案是正确的,我提出的任何问题都只是他所拥有的东西的翻版。
根据您拥有的正则表达式,您希望能够做的似乎是选择一个特定的html标记,并搜索您的内容中出现的所有标记,然后将开始标记和结束标记以及内容输出到一个输出数组中
有一种方法可以实现这一点:
const text=“content>content”;
const tag=“div”;
const re=new RegExp(“()(.*?)”,“g”);
设final=[];
让matches=text.match(re).map((m)=>m.replace(/>(.)/,“>@@@1”)
.replace(/\P1xt)上面的解决方案很好。对于较短的版本,此解决方案“似乎”有效-这是我做的一个快速改进。我假设未定义的对应于“匹配”数组
var text = "<html>\n<meta class='a'/>\n<meta class='b'/>\n<div>\n<p>test</p>\n</div>\n</html>"
var tag = "meta";
var re = new RegExp("<(\/)?" + tag + ".*?>", "gm")
var matches = text.match(re)
text.split(re).reduce( (p,c) => {
(!c) ? p.push(matches.shift()) : p.push(c);
return p;
}, [])
var text=“\n\n\n\ntest\n\n”
var tag=“meta”;
var re=新的RegExp(“,“gm”)
var matches=text.match(re)
text.split(re).reduce((p,c)=>{
(!c)?p.push(匹配.shift()):p.push(c);
返回p;
}, [])
P1xt上面的解决方案很好。对于较短的版本,这一个“似乎”起作用-这是我做的一个快速改进。我假设未定义的对应于“匹配”数组
var text = "<html>\n<meta class='a'/>\n<meta class='b'/>\n<div>\n<p>test</p>\n</div>\n</html>"
var tag = "meta";
var re = new RegExp("<(\/)?" + tag + ".*?>", "gm")
var matches = text.match(re)
text.split(re).reduce( (p,c) => {
(!c) ? p.push(matches.shift()) : p.push(c);
return p;
}, [])
var text=“\n\n\n\ntest\n\n”
var tag=“meta”;
var re=新的RegExp(“,“gm”)
var matches=text.match(re)
text.split(re).reduce((p,c)=>{
(!c)?p.push(匹配.shift()):p.push(c);
返回p;
}, [])
也许在这里看看regex.exec:RegExp
应该匹配什么?为什么要这样做?你打算对结果做什么?另外,在你的HTML中,stringpart1
和match1
等字符串在哪里。你声称要返回的字符串?你需要提供一个实际HTML的片段,因为它是很难收集您想要/需要的内容,如果您不包含这些内容,但却将其包含在我们的预期结果中。@jamesemanon为您做了一些更新。请查看regex.exec此处:RegExp
预期匹配的内容是什么?您为什么要这样做?您计划对结果做什么?还有,stringp在HTML中的什么位置art1
和match1
等。您声称要取回的字符串?您需要提供实际html的一个片段,因为当您不包含它们但将它们包含在我们的预期结果中时,很难收集您想要/需要的内容。@jamesemanon为您做了一些更新
var text = "<html>\n<meta class='a'/>\n<meta class='b'/>\n<div>\n<p>test</p>\n</div>\n</html>"
var tag = "meta";
var re = new RegExp("<(\/)?" + tag + ".*?>", "gm")
var matches = text.match(re)
text.split(re).reduce( (p,c) => {
(!c) ? p.push(matches.shift()) : p.push(c);
return p;
}, [])