仅在2个字符串

时间:2015-12-23 19:54:00

标签: php regex string

我有一个这样的字符串:l' opp lop我需要删除l'o之间的空白区域,因此必须返回l'opp lop

但是我还需要处理不同情况的字符串,例如:L' opp LOPL' Opp lopl' Opp lop并返回正确的字符串而不会在这些字符串之间留出额外的空格,所以结果有是:L'opp LOPL'Opp lopl'Opp lop

我已尝试$new = str_ireplace( "l' o", "l'o", $string );但它总是返回包含l'o的字符串,因此如果字符串为L'Opp lop,则结果始终为小写:l'opp lop

是否可以使用正则表达式获得解决方案,因为我还需要使用它来匹配l' al' il' ul' e

由于

1 个答案:

答案 0 :(得分:2)

您可以使用

~\b(l)'\s+([a-z])~i

并替换为$1$2

请参阅regex demo

重点是使用捕获组以及替换后需要返回的子模式。

正则表达式解释:

  • \b - 开始字边界
  • (l) - 匹配并捕获到第1组中的字母lL(使用/i不区分大小写的修饰符)
  • ' - 文字撇号
  • \s+ - 一个或多个空格(您可以使用\h+仅限于水平空格)
  • ([a-z]) - 匹配并捕获第2组任何ASCII字母(大写和小写)。

在替换模式中,第1组和第2组分别是$1$2的反向引用。