python re.search regex - 如何在字符串的最后4位数中搜索值

时间:2012-01-25 13:12:00

标签: python regex

我编写了一个python脚本(我的第一个)接受字符串的输入,然后使用re.search从字符串创建组以供以后使用。

输入字符串会是这样的:

NSC_sdiakjfean=ffffffff3c19594d45525d5f4f58455e445a4a423660

我目前使用的re.search是:

s = re.search('NSC_([a-zA-Z0-9\-\_\.]*)=[0-9a-f]{8}([0-9a-f]{8})[0-9a-f]{24}([0-9a-f]{4})',name)

我发现的问题是,有时我想要使用的输入缺少此部分[0-9a-f] {24},所以我的python脚本崩溃并出现异常并且不捕获最后一个组。

是否有任何正则表达式(是的,我已经google了这一批)我可以用于输入字符串末尾的最后一组开始,只是将最后4位数字分组?

提前致谢。

亚当

2 个答案:

答案 0 :(得分:2)

$匹配字符串的结尾。

>>> import re
>>> re.search("1234$","lkjlkj1234") # matches
<_sre.SRE_Match object at 0x6a10578>
>>> re.search("1234$","lkjlkj1234ff") # does not match
>>>

所以你可能想要的表达是

s = re.search('([0-9a-f]{4})$',name)

答案 1 :(得分:1)

您不需要正则表达式来查找字符串的最后4个符号的值,您可以使用以下内容:

s = 'NSC_sdiakjfean=ffffffff3c19594d45525d5f4f58455e445a4a423660'
print s[-4:]