字母数字的Python正则表达式

2024-06-28 15:26:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习正则表达式并尝试执行以下操作:

下面是一系列字母数字的格式。它以4位数字、2位空格、8位数字、8位空格、8位空格、8位数字、8位空格、8位空格、或条开头。在

FFFF  FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |

或者写得更清楚:

^{pr2}$

我首先需要在以00A3开头的文件中找到正确的行。然后我需要抽出我用using框起来的数字组:

p = re.compile('00A3  ') # search for 00A3[space][space]
r = re.compile(???)      # search for desired 8 digit groups
q = re.compile(\[SECTION2\])

dataString = inFile.next() # 00A3 388A63FF 00000DF1 52984731 FF989ACB
while not q.match(dataString) # look for [SECTION2] line in file. This means we passed where 00A3 would have been so it must not be here.
    if p.match(dataString):
        numbers = r.findall(dataString) # numbers = [388A63FF, 00000DF1, 52984731, FF989ACB]
        break
    dataString = inFile.next() # get next line to check

这应该给我一个号码清单,以便进一步处理。我只是不知道如何写正则表达式,将只找到4组8个字母数字数字与空格分隔。我的想法是寻找8个字母数字数字,前面有一个空格,后面有一个空格,但是这会引起问题吗?它看起来怎么样?在

我研究了“向前看”和“向后看”选项,但我感到困惑。在

我对这一点还是很陌生的,尤其是在Python中,所以我愿意接受关于更好实现的建议。在

谢谢!在


Tags: reforsearch字母not数字spaceinfile
3条回答

您确实可以使用lookarounds

(?<=\d{4}\s{2})(\d{8}\s){4}(?=[\s|])

您可以对单个8位数字组使用一个正则表达式,然后在一行中找到所有匹配项。在

line = #string

regex = re.compile(r' (\w{8})')

groups = regex.findall(line) #gives a list of the matches in order of appearance

如果你用的是findall,你应该可以

\w{8}

它匹配所有8位长的十六进制数。在

相关问题 更多 >