如何使用正则表达式提取最后 2 个分隔数字
How to extract the last 2 delimitered numbers using regex
我必须提取 number-number
的第一个实例。例如,我想从字符串 bnjdfg/dfg.vom/fdgd3-8236497-234783/dfg8jfg.vofg
中提取 8236497-234783
。该字符串没有明显的结构,除了数字后跟破折号和数字,这是我要提取的内容。
我要提取的东西可能在字符串的最开始,或者中间,或者结尾,或者整个字符串本身只是一个number-number
。
$b = "bnjdfg/dfg.vom/fdgd3-8236497-234783/dfg8jfg.vofg";
preg_match('\d-\d', $b, $matches);
echo($matches[0]);
// Expecting to print 8236497-234783
- 您缺少正则表达式周围的分隔符。 PHP 的
preg
函数要求正则表达式以标点符号开头,并在正则表达式末尾查找匹配字符(因为标志可以放在第二个定界符之后)。
\d
只匹配一个数字。如果要匹配一串数字,应该写\d+
.
- 你应该要求数字被
\b
的单词边界包围,否则它会匹配fdgd3
末尾的3
preg_match('/\b\d+-\d+\b/', $b, $matches);
我必须提取 number-number
的第一个实例。例如,我想从字符串 bnjdfg/dfg.vom/fdgd3-8236497-234783/dfg8jfg.vofg
中提取 8236497-234783
。该字符串没有明显的结构,除了数字后跟破折号和数字,这是我要提取的内容。
我要提取的东西可能在字符串的最开始,或者中间,或者结尾,或者整个字符串本身只是一个number-number
。
$b = "bnjdfg/dfg.vom/fdgd3-8236497-234783/dfg8jfg.vofg";
preg_match('\d-\d', $b, $matches);
echo($matches[0]);
// Expecting to print 8236497-234783
- 您缺少正则表达式周围的分隔符。 PHP 的
preg
函数要求正则表达式以标点符号开头,并在正则表达式末尾查找匹配字符(因为标志可以放在第二个定界符之后)。 \d
只匹配一个数字。如果要匹配一串数字,应该写\d+
.- 你应该要求数字被
\b
的单词边界包围,否则它会匹配fdgd3
末尾的
3
preg_match('/\b\d+-\d+\b/', $b, $matches);