使用Regex分解单词/字符串中的值

时间:2012-12-20 13:19:10

标签: php regex

我有这个示例字符串,我想用正则表达式爆炸日,月,小时,分钟,(上午/下午):

SunDec 16 00:00am

使用此:

(\w+)\s+(\w+)\s+(\d+)\:(\d+)(..)

但它给了我:

Array
(
    [0] => SunDec 16 00:00am
    [1] => SunDec
    [2] => 16
    [3] => 00
    [4] => 00
    [5] => am
)

我无法弄清楚..我可以将SubDec分成两部分吗?

3 个答案:

答案 0 :(得分:2)

你可以试试这个:

$str = 'SunDec 16 00:00am';

preg_match('/([A-Z]{1}\w+)([A-Z]{1}\w+)\s+(\w+)\s+(\d+):(\d+)(..)/', $str, $ret);

print_r($ret);

答案 1 :(得分:1)

如果您的字符串始终遵循该示例,则可以使用此字符:

$string = 'SunDec 16 00:00am';
$pattern = '!([a-zA-Z]{3})([a-zA-Z]{3})\s+(\w+)\s+(\d+)\:(\d+)(..)!';
preg_match($pattern, $string, $chunks);
print_r($chunks);

哪个输出:

Array
(
    [0] => SunDec 16 00:00am
    [1] => Sun
    [2] => Dec
    [3] => 16
    [4] => 00
    [5] => 00
    [6] => am
)

你也可以使用这个稍微小一点的模式

'!([a-z]{3})([a-z]{3})\s+(\w+)\s+(\d+)\:(\d+)(..)!i'

答案 2 :(得分:1)

你可以试试这个正则表达式,这可能对你有帮助

([A-Z][a-z]+)+\s(\d+)?\s?(\d+)\:(\d+)([a-z]+)