gpt4 book ai didi

python - python中十六进制字符串的正则表达式不起作用

转载 作者:太空狗 更新时间:2023-10-30 00:30:22 26 4
gpt4 key购买 nike

我有一个正则表达式来匹配如下字符串:

--D2CBA65440D

--77094A27E09

--77094A27E

--770

--77094A27E09--

基本上,它匹配一个由一个或多个换行符或空格包围的十六进制字符串,并具有前缀——可能有也可能没有——作为后缀

我使用下面的 python 代码,大部分时间都运行良好:

hexaPattern = "\s--[0-9a-fA-F]+[--]?\s"
hex = re.search(hexaPattern, part)
if hex:
print "found a match"

这适用于上述所有但它不匹配此 block 中的 --77094A27E09:

<div id="arrow2" class="headerLinksImg" style="display:block

--77094A27E09

;">

但匹配相同的字符串在:

<input type="checkbox" name="checkbox" id="checkboxKG3" class

--77094A27E09

Content-T="checkboxKG" value="KG3" />

我做错了什么?

最佳答案

import re
hexaPattern = re.compile(r'\s--([0-9a-fA-F]+)(?:--)?\s')
m = re.search(hexaPattern, part)
if m:
print "found a match:", m.group(1)

这会预编译模式以提高速度。这使用了 r''(原始字符串),因此反斜杠一定会被正确传递。这将添加括号以构成“匹配组”,以便您可以在匹配后提取十六进制字符串;它还在第二个 -- 字符串周围添加了一个“非匹配组”。

因为您在第二个“--”周围使用了方括号,所以您得到了一个“字符类”。我不确定字符类 [--] 到底匹配什么;我认为它应该只匹配任何 '-' 字符。在字符类中,“-”通常用于范围,如 [a-z] 但范围 [--] 没有意义,所以我认为它会回退到只匹配 '-'。问题是:因为你后面有 ?,它只能匹配零个或一个 '-' 字符,而你需要它能够匹配两个。

关于python - python中十六进制字符串的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com