我需要匹配字符串中的最后一个整数,并在最后一个整数之前和之后捕获可能的元素,假设字符串可以由单个整数或文本和/或整数的组合组成。假设 $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);
但是 (\d+) 只拾取一位数字:
Matches = abc 123 def 456 ghi : abc 123 def 45 : 6 : ghi
在我期待的时候:
Matches = abc 123 def 456 ghi : abc 123 def : 456 : ghi
我在 Javascript 中得到相同的行为。(.*) 对 (\d+) 有那么贪婪吗?
提前致谢!