因为它应该是一个正则表达式来做到这一点? 喜欢成为正则表达式来做到这一点吗?
我的字符串:
值11-ttable-mtest-xtest2
我想要有:
(main value) value11
(-t value) = table
(-m value) = test
(-x value) = test2
也许添加更多 -y 参数
谢谢
这看起来在没有正则表达式的情况下更容易解决。这里有一个建议:
$values = array();
foreach (explode('-', 'value11-ttable-mtest-xtest2') as $index => $string) {
if ($index == 0) {
$values['main'] = $string;
} else {
$option = substr($string, 0, 1);
$value = substr($string, 1);
$values[$option] = $value;
}
}
你在这里问的不是很清楚。您可以使用以下方法获得所描述的结果
explode('-', 'value11-ttable-mtest-xtest2');
为什么要使用遍历表达式?
这个正则表达式:^([^-]*)(?:-([^-])([^-]+))*$
preg_match_all
应该可以工作。
哪里:
-
([^-]*)
:捕获 0 到 n 次任何字符,但 - -
-([^-])
: 捕获 - 之后的第一个字母 -
([^-]+)
:捕获任何字符的 1 到 n 倍,但 -