尝试Regex提取从.txt文件读取的部分文本。然而,我的方法似乎失败了一些具体行。你知道吗
下面是输入文本的3行
[2019/07/11 18:52:25.391] Receive : <- AI (Req No. 711185105702666 ) Message from : cop10
[2019/07/11 18:52:25.391] Note : Response that is not being sent ... cop10
[2019/07/11 18:52:25.393] ★Err : subargs[0] : IBSDK_7776
下面是提取时间戳后部分文本的代码。你知道吗
regex = r"\[.{23}] ?(.{1,8}:.{1,12}).*\n"
pattern = re.compile(regex)
for line in input_text:
matches = pattern.findall(line)
print('matches is {}'.format(matches))
对于输入文本中的第1行和第2行,输出与预期一样,即提取文本的列表
下面显示的是第1行的输出
“匹配项是['Receive:<;-AI(Req']”
“最后一行的列表为空,即[]”
“我的期望是['★Err:subargs[0]']或一些文本的列表。”
我怀疑这可能是由于文本中的黑星,因为这些地方的代码片段失败,但不完全确定为什么会发生。你知道吗
如果我能得到一些关于这个的信息,如果我需要修改我的正则表达式,那就太好了。你知道吗
最后一行不匹配的原因是最后一行之后没有换行符。你知道吗
如果要保持当前模式,可以断言字符串的结尾
$
你的代码可能看起来像
Regex demo
当前模式不考虑时间戳格式,它匹配任何字符的23倍,除了
[
和]
之间的换行符。你知道吗您可以更新模式以匹配当前的时间戳格式(它不会验证时间戳),使用否定字符类
[^:]+:
after进行匹配,直到:
,或者在捕获组之后省略匹配:Regex demo
相关问题 更多 >
编程相关推荐