正则表达式 - 将 HTML 转换为 ol 标签的 Markdown

标签 regex

一段时间以来,我一直在为这个正则表达式而苦苦挣扎。我正在尝试传输一些 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/

相关文章:

regex - sed 从行尾删除字符模式?

regex - ASP 经典 : Check if string only consists of valid chars

python - 如何解析以空格分隔的键值对的字符串?

java - Regex - 在文本中查找 javascript 方法及其变量

php - 常规 Linux 托管 php 时出现 500 内部错误

JavaScript 正则表达式上的转义星号

regex - 如何在 Perl 中替换现有文件中的字符串

带有 sed 的正则表达式,跨多行搜索

regex - 提取包含字段的行的 HQL 函数仅包含数字

python - 如何使用 re.findall() 使用符号组名