正则表达式,如 Linux 命令


regular expression like linux command

因为它应该是一个正则表达式来做到这一点? 喜欢成为正则表达式来做到这一点吗?

我的字符串:

值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 倍,但 -