PHP - 我需要什么正则表达式代码来匹配这个边界序列?

时间:2014-03-27 00:06:45

标签: php regex

我有以下文字字符串:

-asc100-17-asc100-17A-asc100-17BPH-asc100-17ASL

我需要使用什么正则表达式代码来提取值,以便它们出现在匹配数组中,如下所示:

-asc100-17

-asc100-17A

-asc100-17BPH

-asc100-17ASL

提前致谢!

4 个答案:

答案 0 :(得分:1)

根据您问题中非常有限的信息,这有效:

-asc100-17[A-Z]*

Regular expression visualization

Debuggex Demo

如果您想捕获帖子-asc100-代码,请使用

-asc100-(17[A-Z]*)

17[the letters]放入捕获组1中。

答案 1 :(得分:1)

你可以试试这个:

$str = "-asc100-17-asc100-17A-asc100-17BPH-asc100-17ASL";
preg_match_all('/-asc\d+-[0-9a-zA-Z]+/', $str, $matches);

// Print Result
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => -asc100-17
            [1] => -asc100-17A
            [2] => -asc100-17BPH
            [3] => -asc100-17ASL
        )
)

答案 2 :(得分:1)

preg_split也可以使用lookaheadyour scenario

print_r(preg_split('/(?=-asc)/', $str, -1, PREG_SPLIT_NO_EMPTY));

答案 3 :(得分:0)

您是否试图打破数组中的字符串?那为什么需要正则表达式呢?这个功能可以处理你想要的东西:

$arr = explode('-asc', '-asc100-17-asc100-17A-asc100-17BPH-asc100-17ASL');
foreach ($arr as $value) {
    if(!empty($value)){
        $final[] = '-asc'.$value;
    }
}
print_r($final);

输出数组:数组([0] => -asc100-17 [1] => -asc100-17A [2] => -asc100-17BPH [3] => -asc100- 17ASL)