我有这个字符串:
LP-----A0000001------A0000002
我需要regexp,它会将此字符串格式化为此字符串(在每个第一个字符串之后删除每个字符串。)
这样的事情:
LP-A0000001-A0000002
我试图在php中使用preg_replace()
进行此操作,但我无法完成它。
答案 0 :(得分:2)
您可以尝试匹配两个或多个空格并替换为单个空格:
$out = preg_replace('/ +/', ' ', $in);
对于你的例子,它将是:
$out = preg_replace('/--+/', '-', $in);
答案 1 :(得分:1)
代表空格:
$result = preg_replace('~(?<= ) +~', '', $str);
(?<=...)
是一个后视,意味着前面有
适用于所有类型的空格:
$result = preg_replace('~(?<=\s)\s+~', '', $str);
表示水平空格:
$result = preg_replace('~(?<=\h)\h+~', '', $str);
答案 2 :(得分:0)
如果您只想用一个连字符替换连字符组,可以使用以下正则表达式匹配它们的任何长度:
$str = 'LP-----A0000001------A0000002';
$result = preg_replace('/(\-+)/', '-', $str);
答案 3 :(得分:0)
在/-{2,}/
(Demo)
LP-----A0000001------A0000002
这将匹配2个或更多个连字符,实际上只会进行两次替换。
使用:/-+/
也会匹配单个连字符并将其替换为自己(浪费精力/无变化)。
使用lookbehind效率会降低,因为lookarounds需要花费更多的步骤才能完成。