Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式分解单词/字符串中的值_Php_Regex - Fatal编程技术网

Php 使用正则表达式分解单词/字符串中的值

Php 使用正则表达式分解单词/字符串中的值,php,regex,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 ) 我想不出来。我能把SubD

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

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分解成两个吗?

如果你的字符串总是遵循这个例子,你可以使用这个:

$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'

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

$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'

您可以尝试使用这个正则表达式,这可能会对您有所帮助

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

您可以尝试使用这个正则表达式,这可能会对您有所帮助

([A-Z][a-z]+)+\s(\d+)?\s?(\d+)\:(\d+)([a-z]+)
你可以试试这个:

$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);
你可以试试这个:

$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);

我不明白;这不是你想要的吗?只要不考虑前两个值,你就是在做生意。他不知道如何将“SunDec”分解为Sun和DecIf格式总是3+3个字母(Sun+Dec,Mon+Mar等),而只是将它们的长度一分为二。嘿,没有regex的js中有人需要它吗?谢谢@Dale..做对了..我不明白;这不是你想要的吗?只要忽略前两个值,你就是在做生意。他不知道如何将“SunDec”分解为Sun和DecIf格式总是3+3个字母(Sun+Dec,Mon+Mar等),而只是将它们的长度一分为二。嘿,没有正则表达式的js中有人需要它吗?谢谢@Dale..做对了..+1,但是那些
{1}
“量词”你没有做任何有用的事。是的!你说得对,谢谢。我们可以删除
{1}
的“量词”。:)+1,但是那些
{1}
的“量词”没有任何用处。是的!你说得对,谢谢。我们可以删除
{1}
“量词”。)