Почему это регулярное выражение не соответствует строке с символом процента?
У меня есть файл, который имеет следующий вход:
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. В чем проблема? Спасибо
2 ответа
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
Ты можешь попробовать
if 'a%1b' in linefromfile:
ИЛИ ЖЕ
если вам нужно регулярное выражение
if re.match('a%1b', linefromfile):