Python 正则表达式字典和定义的问题

Python 正则表达式字典和定义的问题,python,regex,Python,Regex,很抱歉,这可能是一个愚蠢的问题,但这里的Python非常环保 我正在尝试使用正则表达式和此处的说明解析txt文件: 我有两个问题: 1) Regex dictionary只匹配一个值:当注释掉上面的三个定义时,我的所有三个定义都“匹配”,但当传递到文件的行时,只有一个匹配。我还验证了每次将不同的行传递给_parse_line函数 2) \d和\d+似乎不起作用-我得到匹配的唯一时间是使用。*-我已经阅读了好几次正则表达式的工作方式,看起来很简单,但我就是无法让它起作用 非常感谢所有的意见 rx_

很抱歉,这可能是一个愚蠢的问题,但这里的Python非常环保

我正在尝试使用正则表达式和此处的说明解析txt文件:

我有两个问题: 1) Regex dictionary只匹配一个值:当注释掉上面的三个定义时,我的所有三个定义都“匹配”,但当传递到文件的行时,只有一个匹配。我还验证了每次将不同的行传递给_parse_line函数

2) \d和\d+似乎不起作用-我得到匹配的唯一时间是使用。*-我已经阅读了好几次正则表达式的工作方式,看起来很简单,但我就是无法让它起作用

非常感谢所有的意见

rx_dict = {
    'serial': re.compile(r'SERIAL\s(?P<serial>\d+)\n'),
    'operation': re.compile(r'MODE\s(?P<operation>.*)\n'),
    'ch': re.compile(r'CHANNEL\s(?P<ch>.*)\n')
}


#line parser

def _parse_line(echo):

    for value, rx in rx_dict.items():
        match = rx.search(echo)
        print (match)
        if match:
                return value, match
        return None, None
rx\u dict={
'serial':重新编译(r'serial\s(?P\d+)\n'),
“操作”:重新编译(r'MODE\s(?P.*)\n),
'ch':重新编译(r'CHANNEL\s(?P.*)\n'
}
#行分析器
定义解析行(回显):
对于值,rx_dict.items()中的rx:
匹配=接收搜索(回声)
打印(匹配)
如果匹配:
返回值,匹配
返回None,None

您似乎有缩进问题。如果字典中的第一个正则表达式不匹配,您就永远无法尝试其他正则表达式。你不是说:

def _parse_line(echo):

    for value, rx in rx_dict.items():
        match = rx.search(echo)
        print (match)
        if match:
                return value, match
    return None, None # outdent

如果
\d*
匹配,但
\d+
不匹配,则您在
序列号之后没有数字

谢谢…缩进上肯定没有错误\d*也不返回。match.group()输出看起来是这样的:1我可以很容易地去掉空白,但是当我用/s指定它在那里时,为什么它不忽略这一点?@RyanWogh您需要准确地显示完整的输入是什么,然后显示您期望的输出匹配是什么,即一个最小的可复制示例。这是得到一个好答案的基本先决条件。你解决问题了吗?如果没有,请共享您测试的样本行,并提供预期结果。注意:您必须发布完整的相关代码片段来重新处理问题,上面的代码不足以理解失败的地方。