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

python re.search regex-如何在字符串的最后4位中搜索值,python,regex,Python,Regex,我编写了一个python脚本(我的第一个脚本),它接受字符串的输入,然后使用re.search从字符串创建组供以后使用 输入字符串如下所示: NSC_sdiakjfean=ffffffff3c19594d45525d5f4f58455e445a4a423660 s = 'NSC_sdiakjfean=ffffffff3c19594d45525d5f4f58455e445a4a423660' print s[-4:] 我当前使用的搜索是: s = re.search('NSC_([a-zA-Z

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

输入字符串如下所示:

NSC_sdiakjfean=ffffffff3c19594d45525d5f4f58455e445a4a423660
s = 'NSC_sdiakjfean=ffffffff3c19594d45525d5f4f58455e445a4a423660'
print s[-4:]
我当前使用的搜索是:

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脚本异常崩溃,无法捕获最后一个组

是否有任何正则表达式(是的,我用谷歌搜索了很多)可以用于最后一组,从输入字符串的末尾开始,然后只对最后4位数字进行分组

提前谢谢


Adam

$
匹配字符串的结尾

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

您不需要regexp来查找字符串最后4个符号的值,只需使用如下内容:

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

你到底有什么例外?(顺便说一句,
[a-zA-Z0-9-\.]
是错误的。如果你想匹配它,你应该把破折号放在末尾
[a-zA-Z0-9.-]
)他正试图创建一组数据点,以供以后参考,这些数据点包含整条线。您所描述的内容只会给他当前字符串的最后四个字符。我没有想到只剪切字符串,尽管我以前在脚本中的其他地方做过。好的,所以在结尾使用$,但是我如何处理一些输入字符串在最后4位之前可能有24个字符,而有些可能没有?如果我删除[0-9a-f]{24},那么对于较短的字符串(而不是全长字符串)就可以了?如果有道理的话?哦,是的。那么
s=re.search([a-zA-Z0-9\-\\\\\.]*)=[0-9a-f]{8}([0-9a-f]{8})。*([0-9a-f]{4}),name)
?应该捕获这两种类型的线。如果这不起作用,您可以随时测试
s
的二进制值,看看它是否匹配。