我有一个文件,其中包含以下输入:
xa%1bc
ba%1bc
.
.
等等。我想使用match
和regex
来识别其中包含a%1b
的行。
我正在使用
import re
p1 = re.compile(r'\ba%1b\b', flags=re.I)
if re.match(p1,linefromfile):
continue
似乎没有检测到%1的行。有什么问题?感谢
答案 0 :(得分:1)
match
仅搜索字符串开头的模式,如果要查明字符串是否包含模式,请改用search
。此外,您不需要单词边界,\b
:
re.search(pattern,string,flags = 0)
扫描字符串寻找 正则表达式模式生成的第一个位置 匹配,并返回相应的匹配对象。如果没有,则返回None 字符串中的位置与模式匹配;请注意这是 不同于在某个点找到零长度匹配 字符串。
re.match(pattern,string,flags = 0)
如果是零个或多个字符 字符串的开头匹配正则表达式模式,返回一个 相应的匹配对象。如果字符串不匹配,则返回None 模式;请注意,这与零长度匹配不同。
import re
if re.search(r"a%1b", "xa%1bc"):
print("hello")
# hello
答案 1 :(得分:0)
你可以尝试
if 'a%1b' in linefromfile:
或强>
如果你需要正则表达式
if re.match('a%1b', linefromfile):