背景
我正在将XML作为我的react-native应用程序的字符串处理。源文本文件以xml格式存储在Web服务器上。 顺便说一句,如果我使用解析后的xml字符串本身会遇到一些困难。
<p><verse-number>1</verse-number> verse1 contents <verse-number>2</verse-number> verse 2 contents <verse-number>3 ... </p>
当我将此字符串解析为对象时,我在“ p”标签下获得了全部经文的内容。
p: "verse1 contents verse 2 contents ..."
所以我添加了一些标签来分隔每个内容
xml.replace("<verse-number>", "</verse-content><verse-number>").replace("</verse-number>","</verse-number><verse-content>")
此后我得到了这个字符串
<p></verse-content><verse-number>1</verse-number><verse-content> verse1 contents </verse-content><verse-number>2</verse-number><verse-content> verse 2 contents </verse-content><verse-number>3 ... <verse-content></p>
替换功能会生成一些不必要的标签,例如<p>
之后和</p>
之前。有些在标签之后和之前。
我需要的
我想从字符串中删除那些不必要的</verse-content>
标记(在<li[numbers]>
之后)。
来自
...
<p></verse-content>...
<li1></verse-content>some string here...
<li2></verse-content>some string again...
<li3></verse-content>another string here ..
<ul></verse-content>...
...
收件人
...
<p></verse-content>...
<li1>some string here...
<li2>some string again...
<li3>another string here ..
<ul></verse-content>...
...
类似string.replace()
。
答案 0 :(得分:1)
HTML和正则表达式不是好朋友。使用解析器,它更简单,更快并且更易于维护。
但是,如果您真的想使用正则表达式,则可以解决您的问题:
html = `
<p></verse-content>...
<li1></verse-content>some string here...
<li2></verse-content>some string again...
<li3></verse-content>another string here ..
<ul></verse-content>...
`;
console.log( html.replace(/(<li\d+>)<\/verse-content>/g, "$1") );
说明:
/ # regex delimiter
(<li\d+>) # group 1, tag liNumber
</verse-content> # literally
/g # regex delimiter, global flag