如何使用正则表达式转换它

时间:2014-07-13 08:41:56

标签: php regex preg-replace

作为正则表达式的新手,我有一个问题,我不知道如何解决这个问题,

$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

3 个答案:

答案 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

DEMO

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