给定正则表达式的附加长度检查

2024-09-29 23:23:43 发布

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

我有以下正则表达式:

valueRegex = re.compile('^(?P<DevID>.{2})(?P<CMD>TMPA|BATT)(?P<Value>-?[\d\.]+)-*$', re.I)

现在,我想另外检查一下,给定的字符串是否有11个字符的精确长度。通常情况下,这不会是一个问题,但在这种情况下,我不知道如何实现它。几次尝试都没成功,我也没办法了。:/

也许,我只是看不到很简单的解决办法:)

下面是我需要检查字符串的函数:

def parseMessages(llapMsg):
    rawMsgs = llapMsg.split('a')
    result = []

    data = [valueRegex.match(val) for val in rawMsgs]

    for val in data:
        if val is not None:
            result.append(val.groupdict())

    return result

Tags: 字符串inrecmdfordata情况val
2条回答

您可以在列表中添加所需的其他检查。所以,你可以这样做:

data = [valueRegex.match(val) != None and len(val) == 11 for val in rawMsgs]

然后,在浏览列表时,值将是TrueFalse,因此您只需检查值本身:

for val in data:
    if val:
        ...

在赛后测试比赛的长度会更容易。你知道吗

使用可选的-?部分,加上表达式中的+*乘法器,将其更改为匹配11个字符将是。。很棘手。你知道吗

您可以使用MatchObject.start().end()方法快速访问匹配的长度:

for val in data:
    if val is not None and (val.end() - val.start()) == 11:
        result.append(val.groupdict())

相关问题 更多 >

    热门问题