PHP preg_replace - 仅替换最大长度为n的字符串

时间:2016-03-19 19:14:15

标签: php regex

所以我有这样的文字:

  

Presedintele executiv al Miscarii Populare,Eugen Tomac,sustine ca sediul partulului din strada Pajurei,Sector 1,fost vandalizat si ca in spatele acestei actiuni s-ar afla& scrie Mediafax。 &amp ;, scris Eugen Tomac pe Facebook.Tomac a mai sustinut,intr-o declaratie de presa,ca locuitorii din strada Pajura ar fi primit mesaje,in numele PMP。 &amp ;, mai spus presedintele executiv。&,mai sustinut Tomac,precizand ca de depus deja sesizare la politie。

里面包含&个字符。每个句子都以.结尾。

我有这个正则表达式:[^\.]*\&[^\.]*\.?匹配任何包含其中&个字符的句子,然后删除它们,但如果它长于n,我不想删除该句子字符,如何在正则表达式中准确指定?

1 个答案:

答案 0 :(得分:1)

如果我们说n为40,你可以构建像(?<=\.|^)(?![^\.]{40,})[^\.&]*\&[^\.]*\.?这样的正则表达式。这只会匹配40个或更少字符的句子。

它在比赛开始时使用负向前瞻以确保这一点,并且还有一个后视,以确保我们不仅仅匹配部分句子。我还将&添加到您正在使用的第一个否定字符类中,因为它会加速您的正则表达式。不确定?后面的\. - 你可能想删除它。

我想注意,点不一定是句子的结尾,但可能是缩写的一部分。