我试图在以下字符串上使用正则表达式来获取它的内容。
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
。
但我对正则表达式并不熟悉,而且我知道我必须得到它:之前*到目前为止我知道' :。* $ '得到:,但我不知道如何限制它直到*
感谢。
答案 0 :(得分:1)
假设它总是具有相同的格式:
' '.join(text.split(' ')[1:-1])
或
text.split(': ')[1].split(' *')[0]
答案 1 :(得分:1)
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
答案 2 :(得分:0)
你可以这样做
s = '00000000: 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 * ....S...E.c.:.6*'
mat = re.match(r'^.*: (.*) \*.*$', s) #get characters before :, group characters between : and *, match rest of string
if mat:
print mat.group(1)
00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36
或者不是匹配整个字符串,你可以使用像这样的搜索
mat = re.search(r': (.*) \*', s)
00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36
答案 3 :(得分:0)
如何使用''.split()
?
>>> myStr = '00000000: 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 *..\..S...E.c.:.6*'
>>> myOutput = myStr.split(':')[1].split('*')[0].strip()
split(':')[1]
为您提供' 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 *..\..S...E.c.:.6*'
,然后split('*')[0]
为您提供' 00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36 '
,然后strip()
删除了前导和尾随空格,因此您获得了'00 0C 5C 99 99 99 CB 11-BE 45 A9 63 DE 3A EF 36'
1}}
答案 4 :(得分:0)
为了匹配或捕获“某些特定字符”,我通常使用倒置字符集:[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'
答案 5 :(得分:-2)
查看字符串,你能不能使用split?
Yourtext.split(':&#39)