Python正则表达式检查字符串是否具有特定的数字集

时间:2018-08-18 14:30:02

标签: python regex

我想检查这组数字是否以确切的模式出现在字符串中:

我要检查的字符串: \4&2096297&0

我的代码

a = "SCSI\DISK&VEN_MICRON&PROD_1100\4&2096297&0&000200"
print(bool(re.match(r"\4&2096297&0+", a)))

它返回False而不是true。如果我在print(bool(re.match(r"hello[0-9]+", 'hello1')))上尝试相同的操作。我是真的我要去哪里错了?

2 个答案:

答案 0 :(得分:1)

    import re

    pattern = "\4&2096297&0"
    print(bool(re.search(pattern,a)))   # this would print "True"

答案 1 :(得分:0)

\4指的是其序号为八进制4而不是后跟4的文字反斜杠的字符。您应该对变量a使用原始字符串文字:

a = r"SCSI\DISK&VEN_MICRON&PROD_1100\4&2096297&0&000200"

此外,应该使用双反斜杠来表示文字反斜杠,而不是使用r"\4&2096297&0+"作为正则表达式,以使\4不会被解释为反向引用:

r"\\4&2096297&0+"

最后,您应该使用re.match而不是re.search,因为re.match从字符串的开头匹配正则表达式,这不是您想要的。

所以:

 import re
 a = r"SCSI\DISK&VEN_MICRON&PROD_1100\4&2096297&0&000200"
 print(bool(re.search(r"\\4&2096297&0+", a)))

将输出:True