正则表达式:如何从 HTML 标签中删除空格或换行符?

正则表达式:如何从 HTML 标签中删除空格或换行符?

我有这种 html 标签,它在 word 之后的某个点被空格打断masuri:

<p class="mb-40px">Aceasta este o melodie alcatuita din patru masuri:
reluata apoi de catre instrumentul solist cu un cintec popular.</p>

输出:

<p class="mb-40px">Aceasta este o melodie alcatuita din patru masuri: reluata apoi de catre instrumentul solist cu un cintec popular.</p>

我想替换该特定标签中的换行符<p class="mb-40px"></p>

我找到了@Toto 制作的一个旧正则表达式,看起来不错,但没有进行替换以获得输出:

寻找:(?:<p class="mb-40px">|\G)(?:(?!</p>).)*?\s\K\s+

替换为:(leave empty)

答案1

我只是根据您期望的输出做出假设,即您想要替换换行符而不是空格。

这将匹配指定标签内的任何单个换行符:

(<p class="mb-40px">)+(.)+\K(\r\n|\r|\n)(?=.*<\/p>)

解释:

(<p class="mb-40px">)+(.)匹配开始标记 + 其后的任意字符

\K重置比赛

(\r\n|\r|\n)匹配换行符

(?=.*<\/p>)检查任何字符 +

比赛结束后

答案2

因此,删除新闻行的正则表达式是(?<=[^\r\n])\R(?=[^\r\n])。我将此正则表达式放在这个新的正则表达式公式的末尾。另请参阅下面的源代码,了解我如何设法解决问题。

使用以下内容:

  • Ctrl+H
  • 寻找:(?-i:<p class="mb-40px">|(?!\A)\G)(?s:(?!</p>).)*?\K(?-i:(?<=[^\r\n])\R(?=[^\r\n]))
  • 用。。。来代替:\x20
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

我通过阅读来解决这个问题这个话题:

我完全赞同你的新缩写!所以:

Let FR (Find Regex ) be the regex which defines the char, string or expression to be searched

Let RR (Replacement Regex ) be the regex which defines the char, string or expression which must replace the FR expression

Let BSR ( Begin Search-region Regex ) be the regex which defines the beginning of the area where the search for FR, must start

Let ESR ( End Search-region Regex) be the regex which defines, implicitly, the area where the search for FR, must end

然后,通用正则表达式可以表示为:

搜索:(?-i:BSR|(?!\A)\G)(?s:(?!ESR).)*?\K(?-i:FR)

代替:RR

相关内容