sed,删除不以标点符号开头的字符串

时间:2013-08-07 18:37:24

标签: regex string parsing replace sed

我需要从文本中删除以下所有子字符串:

</p>

<p class="calibre2">

但不是标点前面的那些,比如“。”要么 ”?”或“!”

所以删除以下

Hello</p>

<p class="calibre2"> World

- &GT;输出所需的“Hello World”

但保留以下相同内容,不做任何修改:

Hello.</p>

<p class="calibre2"> World

2 个答案:

答案 0 :(得分:0)

这必须是吗? 怎么样?

perl -0777 -pe 's{(?<![[:punct:]])</p>\s*<p class="calibre2">}{}g' file

答案 1 :(得分:0)

你可以在正则表达式的帮助下做到这一点。

我可以使用此模式替换

\<\/p\>\s{0,}\<p[\w\W]{0,}?\>

在PHP中,您可以使用此代码

$a = 'Hello</p>

<p class="calibre2"> World';

$pattern = '/\<\/p\>\s{0,}\<p[\w\W]{0,}?\>/';

echo preg_replace($pattern,'',$a);