如何使用正则表达式 php 在大字符串中查找单个数字
How to find single digits in a large string with regex php
我有包含日期、一位数和两位数的大字符串。我需要找到并用前面的零填充单个数字(也可以在日期中,因为月份和日期可能是单个数字)。数据格式如下:
m/d/yyyy 1,21,3,42,5,63,7,84,9
我需要这种格式
mm/dd/yyyy 01,21,03,42,05,63,07,84,09
我试过这个:
$pattern = "#[9]{1}#m";
$str = preg_replace($pattern, "09, $str);
它有点管用,但对于像 29 这样不应该被触及的数字,它会将其变成 209。理想情况下,我想使用通配符而不是特定数字,这样它就会填充所有字符串中的单个数字,但我还没有完全弄清楚那部分。任何帮助将不胜感激,谢谢。
您可以匹配没有被数字包围的数字 1-9
(?<!\d)[1-9](?!\d)
替换为零和完全匹配 0[=12=]
如果不想匹配日期中的数字,可以断言一个逗号或字符串的结尾在右边:
\b[1-9](?=,|$)
我有包含日期、一位数和两位数的大字符串。我需要找到并用前面的零填充单个数字(也可以在日期中,因为月份和日期可能是单个数字)。数据格式如下:
m/d/yyyy 1,21,3,42,5,63,7,84,9
我需要这种格式
mm/dd/yyyy 01,21,03,42,05,63,07,84,09
我试过这个:
$pattern = "#[9]{1}#m";
$str = preg_replace($pattern, "09, $str);
它有点管用,但对于像 29 这样不应该被触及的数字,它会将其变成 209。理想情况下,我想使用通配符而不是特定数字,这样它就会填充所有字符串中的单个数字,但我还没有完全弄清楚那部分。任何帮助将不胜感激,谢谢。
您可以匹配没有被数字包围的数字 1-9
(?<!\d)[1-9](?!\d)
替换为零和完全匹配 0[=12=]
如果不想匹配日期中的数字,可以断言一个逗号或字符串的结尾在右边:
\b[1-9](?=,|$)