[英]Regular Expression to replace last space in each <p> tag with
我正在寻找帮助来创建正则表达式,以替换特定标签(例如<p>
)中的所有最后空格为
代替。 快速修复所有寡妇在庞大的html文档中。
例如;
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus suscipit
dolor a felis blandit sodales. Donec lectus justo, convallis vitae euismod sit.
Nullam et tristique dui.</p>
<p>Nullam accumsan pellentesque pretium. Morbi tempor egestas lectus,
a eleifend enim aliquet varius. Vivamus vitae semper tortor.</p>
我在http://www.petefreitag.com/item/580.cfm找到了这个例子
ReReplace(text, " ([^ ]+\r?\n)", " \1", "ALL")
但是它将它添加到每个元素的每个最后一个空格中。
也感谢任何有关如何改善我写这个问题的建议,真是太棒了
这个问题比看起来要难一些,因为您可能有<p>
元素,其中没有单词,只有一个单词或多个单词,或者在结束标记</p>
之前有很多空格。 您甚至可能在段落元素中嵌套了元素,使您认为可能是孤立词的东西根本不是孤立词。 为了使事情变得更加复杂,在许多版本的HTML中,结束标记</p>
实际上是可选的。
由于这些原因,建议使用HTML解析器,而不仅仅是使用regex处理HTML文件 。
仅当您知道所有<p>
元素都已关闭并且<p>
元素内没有嵌套元素,并且所有<p>
元素具有多个单词时,才可以替换
(\S)\s+(\S+)\s*</p>
同
\1 \2</p>
如果您愿意,可以在最后的\\s*
后面加上括号,并在替换字符串中添加\\3
,如果您希望在结束标记前保留空格。
但是在没有HTML解析器的情况下进行此类操作之前,我会非常小心。
假设您的html格式正确(很少见),并且不知道您使用的是哪种语言,这是一个一般性的答案:
Regex: " (?= *</p>)"
Replacement text: " "
正则表达式匹配一个空格,但是使用了一个前瞻性来断言匹配的空格后面是任意数量的(0-n)空格,然后是目标标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.