删除<p>标签 - 正则表达式(正则表达式)</p>

时间:2014-06-19 08:50:07

标签: html regex

我有一些HTML,并且要求只从字符串中删除起始<p>标记。

示例:

input: <p style="display:inline; margin: 40pt;"><span style="font:XXXX;"> Text1 Here</span></p><p style="margin: 50pt"><span style="font:XXXX">Text2 Here</span></p> <p style="display:inline; margin: 40pt;"><span style="font:XXXX;"> Text3 Here</span></p>the string goes on like that

desired output: <span style="font:XXXX;"> Text1 Here</span></p><span style="font:XXXX">Text2 Here</span></p><span style="font:XXXX;"> Text3 Here</span></p>

是否可以使用正则表达式?我尝试了一些组合,但没有工作。这只是一个字符串。任何建议表示赞赏。

2 个答案:

答案 0 :(得分:18)

我确定您知道有关使用正则表达式匹配html的警告。有了这些免责声明,您可以这样做:

选项1:保留结束</p>代码

第一个选项会关闭</p>关闭标记,但这是您所需输出显示的内容。 :)选项2也将删除它们。

<强> PHP

$replaced = preg_replace('~<p[^>]*>~', '', $yourstring);

<强>的JavaScript

replaced = yourstring.replace(/<p[^>]*>/g, "");

<强>的Python

replaced = re.sub("<p[^>]*>", "", yourstring)
  • <p匹配标记的开头
  • 否定字符类[^>]*匹配任何非结束{0}}
  • 的字符
  • >关闭比赛
  • 我们用空字符串
  • 替换所有这些

选项2:同时删除结束>代码

<强> PHP

</p>

<强>的JavaScript

$replaced = preg_replace('~</?p[^>]*>~', '', $yourstring);

<强>的Python

replaced = yourstring.replace(/<\/?p[^>]*>/g, "");

答案 1 :(得分:0)

这是一个PCRE表达式:

/<p( *\w+=("[^"]*"|'[^']'|[^ >]))*>(.*<\/p>)/Ug

用$ 3替换每个匹配项,或者只删除所有出现的:

/<p( *\w+=("[^"]*"|'[^']'|[^ >]))*>/g

如果你想删除结束标记:

/<p( *\w+=("[^"]*"|'[^']'|[^ >]))*>(.*)<\/p>/Ug