我试图在下面的字符串上使用regex来获取它的内容。
Dump Uuid
size=16:
00000000: 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 *..\..S...E.c.:.6*我需要得到字符串中间的信息,那就是00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36。但我对regex不太熟悉,我知道我必须先得到它:而在此之前,我知道‘:*$’会在:之后得到,但我不知道如何将它限制到*。
谢谢。
发布于 2015-10-14 14:44:07
s = '00000000: 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 *..\..S...E.c.:.6*'
# this will split the string into a list
# ['00000000', ' 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 ', '..\\..S...E.c.', '.6', '']
# next we apply the strings index in the list
import re
print(re.split(r'[:*]',s)[1])
00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 发布于 2015-10-14 14:40:38
那么,假设它始终具有相同的格式,您可以这样做:
' '.join(text.split(' ')[1:-1])或
text.split(': ')[1].split(' *')[0]发布于 2015-10-14 15:07:15
为了匹配或捕获“任何东西,直到一个特定的字符”,我通常使用一个反转字符集:[abc]将匹配a、b或c。[^abc]将与a、b和c相提并论。所以这个模式
": ([^*]+)"将匹配前面的冒号,后面是空白,后面是一个或多个“非恒星”。括号构成一个匹配组,使我们能够只访问相关部分:
inputStr = '00000000: 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 *..\..S...E.c.:.6*'
print(re.search(": ([^*]+)", inputStr).group(1).strip())给出
'00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36'https://stackoverflow.com/questions/33128147
复制相似问题