Почему это регулярное выражение не соответствует строке с символом процента?

У меня есть файл, который имеет следующий вход:

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):
Другие вопросы по тегам