正则表达式 - 反向查找首次出现的数字

时间:2018-05-03 03:21:46

标签: regex

我需要找到倒数第一次出现的数字

例如

INPUT:

32 ABSTREET 5566 BC

预期的输出:

5566

我尝试了一半,但似乎没有用:

^([^[a-z]]+)

2 个答案:

答案 0 :(得分:1)

以下正则表达式从最后一个数字到字符串结尾匹配,但最后一个数字,即您想要的"数字" s,将被放置在第1组中。您通常可以访问他们使用\1,但这取决于您用来评估正则表达式的内容。

(\d+)\D*$

另一种只能匹配您想要但更复杂的解决方案是:

\d+(?=\D+$)

它使用正向前瞻来确保字符串末尾没有数字。

答案 1 :(得分:0)

使用sed,您可以:

sed 's/.*\(\<[0-9]\+\).*/\1/'

这将匹配字符串中的最后一个数字。样品用法:

echo "32 ABSTREET 5566 BC" | sed 's/.*\(\<[0-9]\+\).*/\1/'

输出:

5566