检查for循环中多个regex的字符串

2024-09-30 10:43:02 发布

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

我正在为某人跟踪日志文件,它们完全是一团乱(没有换行符和分隔符)。所以我做了一些简单的正则表达式来整理日志。日志代码现在在一个列表中很好地分开,它们的字符串在一个子目录中附加到列表中

Dict [
    0 : [LOGCODE_53 : 'The string etc etc']
]

因为这有点容易,我打算直接添加一些日志识别到它了。现在我可以匹配日志代码了,但问题是这些代码没有任何问题,而且不同的日志代码通常包含相同的输出字符串。你知道吗

所以我写了一些正则表达式匹配来检测日志的内容。我现在的问题是:检测各种各样的弦模式的智慧是什么?可能有大约110种不同类型的字符串,它们非常不同,不可能“超级匹配”它们。如何在一个字符串上运行~110个regex来找出该字符串的意图,从而在逻辑寄存器中对它们进行索引。你知道吗

有点像这样:“使用这个$STRING并测试这个$LIST中的所有$REGEX,让我知道哪个$REGEX(索引)与这个字符串匹配”。你知道吗

我的代码:

import re

# Open, Read-out and close; Log file
f = open('000000df.log', "rb")
text = f.read()
f.close()

matches = re.findall(r'00([a-zA-Z0-9]{2})::((?:(?!00[a-zA-Z0-9]{2}::).)+)', text)

print 'Matches: ' + str(len(matches))
print '=========================================================================================='

for match in matches:
    submatching = re.findall(r'(.*?)\'s (.*?) connected (.*?) with ZZZ device (.*?)\.', match[1])

    print match[0] + ' >>> ' + match[1]
    print match[0] + ' >>> ' + submatching[0][0] + ', ' + submatching[0][1] + ',',
    print submatching[0][2] + ', ' + submatching[0][3]

Tags: 字符串代码textre列表closematchetc
1条回答
网友
1楼 · 发布于 2024-09-30 10:43:02

re.matchre.searchre.findall返回None如果某个特定正则表达式不匹配,那么您可以迭代可能的正则表达式并测试它们:

tests = [
    re.compile(r'...'),
    re.compile(r'...'),
    re.compile(r'...'),
    re.compile(r'...')
]

for test in tests:
    matches = test.findall(your_string):

    if matches:
        print test, 'works'

相关问题 更多 >

    热门问题