正则表达式不匹配值

2024-06-16 13:08:31 发布

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

因此,我正在创建一个程序,读取输入字符串,并查看它们是否包含列表中的代码。我试图使用正则表达式来获取匹配的字符串,但是我的正则表达式有点问题。以下是我的代码供参考:

import re

values = ["T1245F8", "T1267F8", "T1234F8"]

checkVals = ["rfgT12B45F8asd", "b65dT12B67F8lgkt", "4fgy7tgT12B34F8", "fgtrfT12B94F8fkg"]

for i in range(len(checkVals)):
    match = False
    parsedVal = re.match('T12B[0-9]{2}F8', checkVals[i])
    for j in range(len(values)):
        if parsedVal == values[j]:
            match = True
    print(match)

如果打印出3 True和1 False语句,我期望的输出。但是,不是获取4False语句。你知道吗

编辑:修复了我的正则表达式中的一个拼写错误,但它仍然不起作用。你知道吗


Tags: 字符串代码in程序refalsetruefor
3条回答

从regexp中删除$,它匹配字符串的末尾,而字符串不以F8结尾。另外,使用re.search而不是re.match。你知道吗

我认为有两个问题

首先:

正则表达式末尾的$不允许后面有任何字符

第二:

应该搜索T12B而不是T12

*也可能是在输入测试数据时创建了一个类型。例如rfgT12B45F8asd将与当前表达式不匹配,因为它包含T12B作为数字的前缀,而不是T12

最终正则表达式:

T12B[0-9]{2}F8

这可能只是你问题帖子中的一个输入错误,但我想你的意思是:

values = ["T12B45F8", "T12B67F8", "T12B34F8"]

那么,只要换一行:

parsedVal = re.match('T12B[0-9]{2}F8', checkVals[i])

对于这个:

parsedVal = re.search('T12B[0-9]{2}F8', checkVals[i]).group()

这将为您提供匹配的实际零件。你知道吗

输出:

True
True
True
False

最后,整个代码应该如下所示:

import re

values = ["T12B45F8", "T12B67F8", "T12B34F8"]

checkVals = ["rfgT12B45F8asd", "b65dT12B67F8lgkt", "4fgy7tgT12B34F8", "fgtrfT12B94F8fkg"]

for i in range(len(checkVals)):
    match = False
    parsedVal = re.search('T12B[0-9]{2}F8', checkVals[i]).group()
    for j in range(len(values)):
        if parsedVal == values[j]:
            match = True
    print(match)

我相信这就是你要找的。你知道吗

相关问题 更多 >