我需要从任何带有正则表达式的字符串中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 "
我认为如果我在字符串中的第一个数字之前剪切所有字符就没问题。 我不知道该怎么做。
答案 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+)?)
答案 3 :(得分:0)
我认为如果我在字符串中的第一个数字之前剪切所有字符就没问题。我不知道该怎么做。
就上述陈述而言,您可以使用^.*?(?=\d)
。并替换为''
(空字符串)。
注意:如果您想提取数字Kasra的解决方案是最好的,如果您想匹配和替换,您可以使用它。
答案 4 :(得分:0)
替换字符串......
$str = "drog stabilizatorja Meyle RE 16-16 060 0004/HD";
$str = preg_replace( '/.*([^\\d*](\\d.*))/', '\1', $str);
echo $str;