如何使用正则表达式按字符拆分字母数字字符串?
How to split an alphanumeric string by its characters using regex?
我有一系列形式为
的字符串
10a99b5c
55
2a3b1
g
如何按字符拆分字符串(在数字之间或字符串的 beginning/end 中始终显示为单个字符)
array([0] => 10a99b5c, [1] => 10, [2]=> a99, [3] => b5, [4] => c),
array([0] => 55, [1] => 55),
array([0] => 2a3b1, [1] => 2, [2] => a3, [3] => b1),
array([0] => g, [1] => g),
输出格式不重要,我可以处理,我只是不知道什么样的正则表达式模式可以做到这一点(即使是提示也足够了)。
我使用 preg_replace_callback
执行此操作,其中我使用为每个字符找到的数字进行一组计算。
正则表达式:
/[a-z]*[0-9]*/
- [a-z] 将匹配任何(小写)字符
- 零次或更多次
- [0-9] 将匹配一个数字
- 零次或更多次
试试这个:
$input = ['10a99b5c','55','2a3b1','g'];
$regEx = '~([a-z]\d*)~';
foreach($input as $str){
$res[] = preg_split($regEx,$str,-1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
}
echo '<pre>';
var_export($res);
以上示例的结果:
array (
0 =>
array (
0 => '10',
1 => 'a99',
2 => 'b5',
3 => 'c',
),
1 =>
array (
0 => '55',
),
2 =>
array (
0 => '2',
1 => 'a3',
2 => 'b1',
),
3 =>
array (
0 => 'g',
),
)
我有一系列形式为
的字符串10a99b5c
55
2a3b1
g
如何按字符拆分字符串(在数字之间或字符串的 beginning/end 中始终显示为单个字符)
array([0] => 10a99b5c, [1] => 10, [2]=> a99, [3] => b5, [4] => c),
array([0] => 55, [1] => 55),
array([0] => 2a3b1, [1] => 2, [2] => a3, [3] => b1),
array([0] => g, [1] => g),
输出格式不重要,我可以处理,我只是不知道什么样的正则表达式模式可以做到这一点(即使是提示也足够了)。
我使用 preg_replace_callback
执行此操作,其中我使用为每个字符找到的数字进行一组计算。
正则表达式:
/[a-z]*[0-9]*/
- [a-z] 将匹配任何(小写)字符
- 零次或更多次
- [0-9] 将匹配一个数字
- 零次或更多次
试试这个:
$input = ['10a99b5c','55','2a3b1','g'];
$regEx = '~([a-z]\d*)~';
foreach($input as $str){
$res[] = preg_split($regEx,$str,-1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
}
echo '<pre>';
var_export($res);
以上示例的结果:
array (
0 =>
array (
0 => '10',
1 => 'a99',
2 => 'b5',
3 => 'c',
),
1 =>
array (
0 => '55',
),
2 =>
array (
0 => '2',
1 => 'a3',
2 => 'b1',
),
3 =>
array (
0 => 'g',
),
)