匹配几个可变参数

Match several changeable arguments

我想在这里看到:

[AA] - ( 371M 39F - COMPLETE ) - [AA]

但它总是在变化,例如这里可以是这样

[AA] - ( 371M 39F - COMPLETE ) - [AA]
[cc] - ( 3M 3F - COMPLETE ) - [cc]
[1234] - ( 99.9M 111F - COMPLETE ) - [1234]
[A55bg] - ( 45571M 31239F - COMPLETE ) - [A55bg]

总是以[开始,以]结束

以下始终相同

[ ] - (  M  F - COMPLETE ) - [ ]

我想使用变量 'skip' 来检查它是否出现在列表中。

import re

list = ['/home', '/home/test1', '/home/test1/aaa', '/home/test1/aaa/[AA] - ( 371M 39F - COMPLETE ) - [AA]', 'ccc']
skip = '\[([0-9|a-z|A-Z]+)\]\s+\-\s+\(\s+(\d+\.*\d*)M\s+(\d+)F\s+\-\s+COMPLETE\s+\)\s+\-\s+\[([0-9|a-z|A-Z]+)\]$'

for element in list:
    m = re.search(skip, element)
    if m:
        print('match')

假设 zz 标注的字符串仅为字母数字,您可以使用如下所示的 Regex 模式。它将为输出列表中的每个 zz 发出一个匹配组,供您进一步使用。

\[([0-9a-zA-Z]+)\]\s+\-\s+\(\s+(\d+\.*\d*)M\s+(\d+)F\s+\-\s+COMPLETE\s+\)\s+\-\s+\[([0-9a-zA-Z]+)\]

这确实允许每个 zz 1 或更长的任意长度,以及出现在任何地方的多个空格。如果您需要进一步限制它,请编辑!