我想检查这组数字是否以确切的模式出现在字符串中:
我要检查的字符串: \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')))
上尝试相同的操作。我是真的我要去哪里错了?
答案 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