我需要匹配字符串中的最后一个整数并捕获最后一个整数之前和之后的可能元素,假设该字符串可以由单个整数或文本和/或整数的组合组成。 假设 $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+) 吗?
提前致谢!
最佳答案
为什么不是/(\d+)\D*$/
?这样,唯一的捕获组就是整数。
顺便说一句,当我使用正则表达式时,我通常使用 http://gskinner.com/RegExr/
关于php - 使用 php 和 javascript 匹配字符串中最后一个整数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559037/