我有这个字符串++++++1DESIGNRESULTSM25Fe415(Main)
我有类似的字符串约2000行,我想从中分割这些......
[++++++] [1] [DESIGNRESULTS] [M25] [Fe415] [(Main)]
从模式中只有第2个4h和第5个值发生变化
例如.. ++++++2DESIGNRESULTSM30Fe418(Main)
等..
我真正想要的是:
我想要的类似输出是
Array ( [0] => 1 [1] => M25 [2] => Fe415 )
请帮帮我...
提前致谢:)
答案 0 :(得分:1)
您的数据拆分需求有点不清楚。一个正则表达式,它将在您首先指定的每个块上获得单独的匹配:
(\++)(\d)(DESIGNRESULTS)(M\d\d)(Fe\d\d\d)(\(Main\))
如果你只需要最后要求的两个,你可以使用
(\d)DESIGNRESULTS(M\d\d)(Fe\d\d\d)
如果位数未知,您也可以将\d\d
替换为\d+
。
但是,根据您的示例,每个字符串块看起来都是一致的长度。使用
会更快array(
substr($string, 6, 1)
//...
)
答案 1 :(得分:0)
这个怎么样
$str = "++++++1DESIGNRESULTSM25Fe415(Main)";
$match = array();
preg_match("/^\+{0,}(\d)DESIGNRESULTS(\w{3})(\w{5})/",$str,$match);
array_shift($match);
print_r($match);