Php 如何使用正则表达式转换此值
作为正则表达式的新手,我有一个问题,我不知道如何解决这个问题Php 如何使用正则表达式转换此值,php,regex,preg-replace,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"; 我需要这种格式的输出2009年3月15日sun
$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";
我需要这种格式的输出
2009年3月15日sun
您已经在使用+
修饰符,然后您正在使用量词{}
,这根本没有意义
您需要删除+
并用反斜杠转义(
和)
,以逐字匹配它们
因此,使用这个正则表达式:
(\d{1,2})(\w{3})(\d{4})\(\w{3}\)
并将其替换为:
$1 $2 $3 $4
删除额外的
+
,并在最后一部分中为匹配括号而转义:
$pattern = '/(\d{1,2})(\w{3})(\d{4})\((w{3})\)/';
您可以使用下面的正则表达式
^(\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
2009年3月15日星期日
谢谢@Avinash,你节省了我的时间,也教会了我。