我有以下文字字符串:
-asc100-17-asc100-17A-asc100-17BPH-asc100-17ASL
我需要使用什么正则表达式代码来提取值,以便它们出现在匹配数组中,如下所示:
-asc100-17
-asc100-17A
-asc100-17BPH
-asc100-17ASL
提前致谢!
答案 0 :(得分:1)
根据您问题中非常有限的信息,这有效:
-asc100-17[A-Z]*
如果您想捕获帖子-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也可以使用lookahead和your 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)