php查找并替换句号,后不加空格

时间:2018-11-27 07:07:05

标签: php regex regular-language

使用php,我想在句号后面添加一个空格,而不要添加一个空格。 我需要使用什么正则表达式来匹配以下文本中的第一个句号,而不是第二个句号?

输入:hello world.how are you. doing ?

输出:hello world. how are you. doing ?

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式实现相同的目的。

(?<=[a-z])(?=\d)|(?<=\d)(?=[a-z])

说明:

Demo

  • (?<=[a-z])(?=\d)->此正则表达式表示正面和反面,以标记一个点,该点前面有字母,后面有数字
  • (?<=\d)(?=[a-z])->与此类似,此正则表达式正面表示正面,背面表示正面以标记一个点,该点前面有数字,后面有字母

它用空格替换该标记,从而为您提供所需的输出。

这是相同的示例php代码,

$str = 'hello13 world how are 12you';
$str = preg_replace('/(?<=[a-z])(?=\d)|(?<=\d)(?=[a-z])/i', ' ', $str);
echo $str;

根据需要打印以下输出,

hello 13 world how are 12 you

答案 1 :(得分:0)

您可以使用preg_match_all()implode()这样的空格来尝试这种方式。

<?php
$string = "hello13 world how are 12you";
preg_match_all('/([0-9]+|[a-zA-Z]+)/',$string,$matches);
print_r($matches[0]);
echo implode(' ', $matches[0]);
?>

演示https://3v4l.org/bs3tN