0

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

</p>

<p class="calibre2">

但不是那些以标点符号开头的,比如“。” 或者 ”?” 或者 ”!”

所以删除以下

Hello</p>

<p class="calibre2"> World

--> 输出所需的“Hello World”

但保留以下内容,无需修改:

Hello.</p>

<p class="calibre2"> World
4

2 回答 2

0

这必须是吗?怎么样?

perl -0777 -pe 's{(?<![[:punct:]])</p>\s*<p class="calibre2">}{}g' file
于 2013-08-07T19:25:54.677 回答
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);
于 2013-08-07T20:42:37.490 回答