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


PHP preg_replace - replace only strings that have max length n

所以我有这样的文字:

Presedintele executiv al Miscarii Populare, Eugen Tomac, sustine ca sediul partidului din strada Pajurei, Sector 1, a fost vandalizat si ca in spatele acestei actiuni s-ar afla &, scrie Mediafax. &, a 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. 和, a mai spus presedintele executiv.&, a mai sustinut Tomac, precizand ca a depus deja sesizare la politie.

其中包含内部的&字符。每个句子都以.结尾。

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

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

它在比赛开始时使用否定的展望来确保这一点,并使用回溯来确保我们不只是匹配部分句子。我还&添加到您正在使用的第一个否定字符类中,因为它会大大加快您的正则表达式的速度。不确定'.背后的? - 您可能需要将其删除。

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