BC1024,AB124,CBC2548,
使用preg match来分隔数字和字符,
为此,我尝试了这个preg匹配表达式,但它不能很好地工作,
preg_match_all('/(?P\w+): (?P\d+)/', $flight_code_no, $matches,PREG_PATTERN_ORDER);
我希望输出为
Array ( [0] => BC1024: 2008 [name] => BC [1] => BC [digit] => 1024 [2] => 1024 )
但我的preg匹配不起作用......
刚刚空阵,
答案 0 :(得分:2)
preg_match('/(?<name>[A-Z]+)(?<digit>\d+)/', 'BC1024', $result);
这给出了
Array ( [0] => BC1024 [name] => BC [1] => BC [digit] => 1024 [2] => 1024 )
答案 1 :(得分:2)
只是为了表明你不需要preg_match来分割这样一个简单的字符串:
list($name,$digit) = sscanf($flight_code_no,'%[A-Z]%d');
答案 2 :(得分:1)
运行
<?php
foreach (array("BC1024", "AB124","CBC2548") as $v) {
preg_match_all("/(?P<name>[A-Z]+)(?P<digit>\d+)/", $v, $matches);
var_dump($matches);
}
输出(为brewity删除了一些换行符)
array(5) {
[0]=> array(1) { [0]=> string(6) "BC1024" }
["name"]=> array(1) { [0]=> string(2) "BC" }
[1]=> array(1) { [0]=> string(2) "BC" }
["digit"]=> array(1) { [0]=> string(4) "1024" }
[2]=> array(1) { [0]=> string(4) "1024" }
}
array(5) {
[0]=> array(1) { [0]=> string(5) "AB124" }
["name"]=> array(1) { [0]=> string(2) "AB" }
[1]=> array(1) { [0]=> string(2) "AB" }
["digit"]=> array(1) { [0]=> string(3) "124" }
[2]=> array(1) { [0]=> string(3) "124" }
}
array(5) {
[0]=> array(1) { [0]=> string(7) "CBC2548" }
["name"]=> array(1) { [0]=> string(3) "CBC" }
[1]=> array(1) { [0]=> string(3) "CBC" }
["digit"]=> array(1) { [0]=> string(4) "2548" }
[2]=> array(1) { [0]=> string(4) "2548" }
}