一段时间以来,我一直在为这个正则表达式而苦苦挣扎。我正在尝试传输一些 HTML 以进行标记。
我有这个代码:
`"<ol>
<li>This is a new list</li>
<ol>
<li>Embedded List</li>
<li>Embedded List</li>
</ol>
</ol>"`
我需要为所有 <li>
添加 4 个空格在两个内<ol>
所以只是第二个 <li>
元素需要 4 个空格。
伪代码中的正则表达式是 find all <li>
以 "<ol>
任何字符和 <ol>
开头。
这是我到目前为止尝试过的(?<=\"<ol>\r\n)(?<=[A-Za-z]<ol>\r\n)<li>
但没有运气。这甚至可以使用正则表达式吗?
最佳答案
你可以使用
(<li[^<]*>)([^>]*<\/li>)(?=(?![\s\S]*?<ol[^<]*>)[\s\S]*?<\/ol>)
替换为$1 $2
.参见 demo
正则表达式匹配
-
(<li[^<]*>)
- 匹配并捕获开口li
节点 -
([^>]*<\/li>)
- 匹配和捕获li
节点内容和结束li
节点 -
(?=(?![\s\S]*?<ol[^<]*>)[\s\S]*?<\/ol>)
- 检查是否有任何文本和关闭ol
节点,但没有开口ol
标签在它之前。
免责声明:Regex 并非用于解析 HTML,而是使用适当的解析器。当前的正则表达式只是为了表明它可以处理您提供的样本输入。
关于正则表达式 - 将 HTML 转换为 ol 标签的 Markdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995713/