为什么此正则表达式不匹配带百分比符号的字符串?

时间:2016-09-17 20:20:51

标签: python regex string match word-boundary

我有一个文件,其中包含以下输入:

xa%1bc
ba%1bc
.
.

等等。我想使用matchregex来识别其中包含a%1b的行。 我正在使用

 import re
 p1 = re.compile(r'\ba%1b\b', flags=re.I)
 if re.match(p1,linefromfile):
    continue

似乎没有检测到%1的行。有什么问题?感谢

2 个答案:

答案 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):