PHP删除某些字符串之前的所有字符

时间:2015-04-20 17:18:26

标签: php regex string

我需要从任何带有正则表达式的字符串中grep某个字符串(带粗体)。

示例数据:

" drog stabilizatorja Meyle RE 16-16 060 0004 / HD "

" koncnik Meyle RE 16-16 020 0013 "

" gumica stabilizatorja Meyle RE 16-14 079 9404 / S "

我认为如果我在字符串中的第一个数字之前剪切所有字符就没问题。 我不知道该怎么做。

5 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

'\d+-\d+.*'

答案 1 :(得分:0)

使用正则表达式:

$str = "drog stabilizatorja Meyle RE 16-16 060 0004/HD";
preg_match("/[^\\d*](\\d.*)/", $str, $matches);
echo $matches[1];

输出:

  

16-16 060 0004 / HD

答案 2 :(得分:0)

Kasra的解决方案是最简单的解决方案,效果很好。但是,如果您想确保您的样品具有特定的模式,那么这将是一个专门的"方法:

$samples = array(
    "drog stabilizatorja Meyle RE 16-16 060 0004/HD",
    "koncnik Meyle RE 16-16 020 0013",
    "gumica stabilizatorja Meyle RE 16-14 079 9404/S"
);

$result = array();

foreach ($samples as $sample) {
    if (preg_match('@(\d{2}\-\d{2}\s\d{3}\s\d{4}(/\w+)?)@', $sample, $matches)) {
        $result[] = $matches[0];
    }
}

print_r($result);

// Output:
//
// Array
// (
//     [0] => 16-16 060 0004/HD
//     [1] => 16-16 020 0013
//     [2] => 16-14 079 9404/S
// )

(\d{2}\-\d{2}\s\d{3}\s\d{4}(\/\w+)?)

Regular expression visualization

Debuggex Demo

答案 3 :(得分:0)

  

我认为如果我在字符串中的第一个数字之前剪切所有字符就没问题。我不知道该怎么做。

就上述陈述而言,您可以使用^.*?(?=\d)。并替换为''(空字符串)。

Demo and explanation

注意:如果您想提取数字Kasra的解决方案是最好的,如果您想匹配和替换,您可以使用它。

答案 4 :(得分:0)

替换字符串......

$str = "drog stabilizatorja Meyle RE 16-16 060 0004/HD";
$str = preg_replace( '/.*([^\\d*](\\d.*))/', '\1', $str);
echo $str;
相关问题