作为正则表达式的新手,我有一个问题,我不知道如何解决这个问题,
$string = '15Mar2009(sun)';
$pattern = '/((\d+){1,2})((\w+){3})((\d+){4})((w+){3})/i';
$replacement = '${1} ${2} ${3} ';
echo "\n";
echo preg_replace($pattern, $replacement, $string);
echo "\n";
我需要这种格式的输出15 Mar 2009 sun
答案 0 :(得分:1)
您已经使用+
修饰符,然后您使用的量词{}
根本没有意义。
您需要移除+
并以反斜杠转义(
和)
,以便按字面意思匹配它们。
所以,请使用此正则表达式:
(\d{1,2})(\w{3})(\d{4})\(\w{3}\)
并将其替换为:
$1 $2 $3 $4
答案 1 :(得分:1)
删除额外的+
并匹配括号在最后一部分中将其转义:
$pattern = '/(\d{1,2})(\w{3})(\d{4})\((w{3})\)/';
答案 2 :(得分:1)
您可以使用以下正则表达式
^(\d{2})([A-Za-z]{3})(\d{4})\(([^)]*)\)$
换人,
$1 $2 $3 $4
PHP代码将是,
<?php
$string = '15Mar2009(sun)';
$pattern = '~^(\d{2})([A-Za-z]{3})(\d{4})\(([^)]*)\)$~';
$replacement = '$1 $2 $3 $4';
echo preg_replace($pattern, $replacement, $string);
?> //=> 15 Mar 2009 sun