正则表达式匹配字符串中的最后一个整数与php和javascript

0 javascript php regex anchor digit

我需要匹配字符串中的最后一个整数并捕获最后一个整数之前和之后的可能元素,假设该字符串可以由单个整数或文本和/或整数的组合组成.假设$ str可以是:

  • '123' - >'' - 123 - ''
  • 'abc 123' - >'abc' - 123
  • 'abc 123 def' - >'abc' - 123 - 'def'
  • 'abc 123 def 456' - >'abc 123 def' - 456
  • 等等

我期望php中的以下代码可以完成这项工作:

$str = 'abc 123 def 456 ghi';
preg_match('/(.*)(\d+)(\D*)$/', $str, $matches);
echo 'Matches = ' . implode(' : ', $matches);
Run Code Online (Sandbox Code Playgroud)

但是(\ d +)只能获得一位数:

 Matches = abc 123 def 456 ghi : abc 123 def 45 : 6 :  ghi
Run Code Online (Sandbox Code Playgroud)

虽然我在期待:

 Matches = abc 123 def 456 ghi : abc 123 def  : 456 :  ghi
Run Code Online (Sandbox Code Playgroud)

我在Javascript中得到了相同的行为.(.*)贪婪地闯入(\ d +)?

提前致谢!

tim*_*ood 6

为什么不/(\d+)\D*$/呢?这样,唯一的捕获组是整数.

顺便说一句,当我正在使用正则表达式时,我通常使用http://gskinner.com/RegExr/