首页 > 解决方案 > 正则表达式:查找最后一次出现的数字对

问题描述

我正在尝试在某些类型的字符串中找到数字对的最后一个匹配项,例如:

123f64swfW68F43
123f64swfW6843
123f64swfW6843sad
123f64swfW6843sa3d

在所有这些中,匹配结果应该是 43。我尽力而为:

/(\d{2})(?!.*\d)/

但这仅适用于前三个字符串。

请注意,我想在一个正则表达式中执行此操作,而无需任何进一步的脚本。

谢谢你的帮助!

标签: regex

解决方案


您可以使用

\d{2}(?!\d|.*\d{2})

请参阅正则表达式演示。它的基本意思是“匹配 2 个连续的数字,这些数字后面没有紧跟一个数字,并且后面没有跟这两个数字右侧的任何 2 个连续数字”。

细节

  • \d{2}- 两位数
  • (?!\d|.*\d{2})- 除了换行符之外,任何 0+ 字符后面都没有数字或任何两位数。

或者,您可以使用

/.*(\d{2})/

并获取第 1 组值。请参阅正则表达式演示。此正则表达式的意思是“将所有文本与最后两位数字匹配,并将这两位数字捕获在单独的内存缓冲区中”。

细节

  • .*- 除换行符以外的任何 0+ 个字符,尽可能多
  • (\d{2})- 捕获组 1:两位数

推荐阅读