我正在阅读一个.html文件:
const htmlin = String(fs.readFileSync(inputHtml) || '');
const splitted = htmlin.split(/<pre.*>/);
splitted.shift();
const justPost = splitted.join('').split('</pre>');
justPost.pop();
但我在寻找一种方法来匹配
aaa <pre> xxx </pre> bbb <pre> foo </pre> ccc
并匹配外部的文本。这样我就可以得到两个数组:
['aaa ', ' bbb ', ' ccc']
和
[' xxx ', ' foo ']
我如何用正则表达式或其他方法来实现这一点?
4条答案
按热度按时间os8fio9y1#
一种方法是使用正则表达式替换函数和捕获组。
<pre>(.*?)(?=<\/pre>)
-匹配pre
标记之间的文本。(g1)(?:^|<\/pre>)(.*?)(?=$|<pre>)
-匹配pre
标记外的文本。(g2)dgsult0t2#
您可以使用dom或domparser来代替正则表达式。
例如,创建一个div并将innerHTML属性设置为html。然后循环子节点并获取innerHTML或textContent。
例如:
vdgimpew3#
我使用re.dotall来查找
然后在回车时拆分
jdg4fx2g4#
因为你可能有html标签在里面-我个人会把一个标记,不存在于html在结束标签€这样.然后我会搜索从开始的前标签