我不愿意问,但我无法弄清楚php preg_replace并忽略了刺痛的某些部分。
$string = '2012042410000102';
$ string需要看起来像_0424_102
显示的数字总是在变化,2012年会有所变化
我尝试了什么:
^\d{4}[^\d{4}]10000[^\d{3}]$
^\d{4}[^\d]{4}10000[^\d]{3}$
任何帮助将不胜感激。我知道这是一个noob问题,但对于任何有帮助的人来说都很容易。
由于
答案 0 :(得分:3)
你的第一个正则表达式正在寻找:
你的第二个正则表达式正在寻找:
你正在寻找的正则表达式是:
^\d{4}(\d{4})10000(\d{3})$
替换应该是:
_$1_$2
这个正则表达式寻找:
102
)答案 1 :(得分:1)
尝试以下方法:
^\d{4}|10000(?=\d{3}$)
这将匹配字符串中的前四位数字,或者如果在字符串结尾之前的“10000”之后有三位数字,则匹配字符串“10000”。
您可以这样使用它:
preg_replace('/^\d{4}|10000(?=\d{3}$)/', '_', $string);
答案 2 :(得分:0)
只需使用简单的字符串函数:
$string = '2012042410000102';
$new = '_'.str_replace('10000', '_', substr($string, 4));
答案 3 :(得分:0)
如果他们总是在相同的角色位置,那么正则表达式似乎是不必要的。您可以使用子字符串来获取所需的部分,例如
sprintf('_%s_%s', substr($string,4,4), substr($string,13))
或
'_' . substr($string,4,4) . '_' . substr($string,13)