javascript - 将正则表达式拆分为数组
问题描述
我在多行上有一串元素(但如有必要,我可以将其更改为全部在一行上)并且我想将其拆分为 <section> 元素。我认为这很容易,只需 str.split(regex),甚至 str.split('<section'),但它不起作用。它永远不会打破这些部分。
我试过使用正则表达式 SecRegex = /<section. ?>[\s\S] ?</section>/; var fndSection = result.split(SecRegex);
试过 var fndSection = result.split('<section');
我浏览了整个网络,发现上述两种方法中的一种应该有效。
结果='
<chapter id="chap1">
<para0><title></title></para0>
</chapter>
<chapter id="chap2"> <title>THEORY</title>
<section id="Thoery">
<title>theory Section</title>
<para0 verstatus="ver">
<title>Theory Para 0 </title>
<text>blah blah</text>
</para0>
</section>
<section id="Next section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<section id="More sections">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<section id="section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<chapter id="chap1">
<para0><title></title></para0>
</chapter>
<chapter id="chap1">
<para0><title></title></para0>
</chapter>
<chapter> <title>Chapter Title</title>
<section id="Section ID">
<title>Section Title</title>
<para0>
<title>Para0 Title</title>
<para>blah blah</para>
</para0>
</section>
<section id="Next section">
<title>title</title>
<para0>
<line>Title</line>
<text>blah blah</text>
</para0>
</section>
<section id="More sections">
<title>title</title>
<para0>
<list>Title</list>
<text>blah blah</text>
</para0>
</section>
<section id="section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<ipbchap>
<tags></tags>
</ipbchap>
</body>
<rear>
<tags></tags>
</rear>
</doc>'
代码
SecRegex = /<section.*?>[\s\S]*?<\/section>/;
var fndSection = result.split(SecRegex);
console.log("result string " + fndSection);
这是我从我的代码中得到的结果
result string <chapter id="chap2"> <title>THEORY</title> , , , , <chapter id="chap1"> <para0> <title></title></para0> </chapter>
result string <chapter id="chap1"> <para0> <title></title></para0> </chapter>
result string <chapter
如你看到的
我想要的是一串 <section>.*?</section> 到数组中
谢谢大家看到这个并帮助我。我感谢您的所有帮助。
玛克辛
解决方案
你的表情看起来很不错!您可能只想稍微修改它,可能类似于:
/<section[a-z="'\s]+>([\s\S]*?)<\/section>/gmi
正则表达式
如果这不是您想要的表达式,您可以在regex101.com中修改/更改您的表达式。
正则表达式电路
您还可以在jex.im中可视化您的表达式:
JavaScript 测试
const regex = /<section[a-z="'\s]+>([\s\S]*?)<\/section>/gmi;
const str = `<chapter id="chap1">
<para0><title></title></para0>
</chapter>
<chapter id="chap2"> <title>THEORY</title>
<section id="Thoery">
<title>theory Section</title>
<para0 verstatus="ver">
<title>Theory Para 0 </title>
<text>blah blah</text>
</para0>
</section>
<section id="Next section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<section id="More sections">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<section id="section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>`;
const subst = `$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
如果您可能还想捕获部分标签,您可以简单地将整个表达式包装在一个捕获组中:
const regex = /(<section[a-z="'\s]+>([\s\S]*?)<\/section>)/gmi;
const str = `<chapter id="chap1">
<para0><title></title></para0>
</chapter>
<chapter id="chap2"> <title>THEORY</title>
<section id="Thoery">
<title>theory Section</title>
<para0 verstatus="ver">
<title>Theory Para 0 </title>
<text>blah blah</text>
</para0>
</section>
<section id="Next section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<section id="More sections">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>
<section id="section">
<title>title</title>
<para0>
<title>Title</title>
<text>blah blah</text>
</para0>
</section>`;
const subst = `\n$1\n`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: \n', result);
推荐阅读
- c# - HasMany 配置 MaxExpansionDepth 问题
- azure - 使用已存在的函数应用程序作为 Docker 映像从 azure 门户创建 azure 函数应用程序
- javascript - 在 React Native 中上传到 Firebase 后无法获取图片下载 URL 并显示图片
- python - 我无法创建混淆矩阵
- c# - Task.WhenAll 太慢了
- redirect - HaPRoxy 使用文件重定向
- sql - SQL中float转varchar并去掉小数点后的值
- python - 重塑两个字符串列以在 Pandas 之间计算
- android - 带有视图绑定或 Jetpack 组合的 Kotlin
- sqlite - GORM 和 SQLite:自动增量不起作用