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

标签 php javascript 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);

但是 (\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/

相关文章:

php - 递归项状态性能

PHP + Wordpress - 从目录中获取文件列表

Python 重复捕获组

java - 正则表达式检查包含 2 个或更多空格的字符串

python - 处理正则表达式组中的字符串后替换所有出现的正则表达式组

php - 关系 laravel 中的链接表

php - 在我的 Mysql 语句中包含 GROUP BY id

javascript - 发送消息并很快将其删除

javascript - 如何使用 JavaScript 数组和 getDate 显示今天的日期?

javascript - 如何使用 JQuery 的 get 函数发布动态 JSON 字符串?