РЕДАКТИРОВАТЬ: Этот вопрос не имеет смысла, как только вы поймете, что означает флаг r. Подробнее здесь. Для людей, которые ищут быстрый андерс, я добавил ниже.
Если я буду вводить регулярное выражение вручную в Python script, я могу использовать 4 комбинации флагов для строк шаблона:
- p1 = "pattern"
- p2 = u "pattern"
- p3 = r "pattern"
- p4 = ru "pattern"
У меня есть последовательность строк unicode, поступающая из ввода веб-формы, и вы хотите использовать их как шаблоны regexp.
Я хочу знать, какой процесс я должен применить к строкам, чтобы я мог ожидать аналогичного результата от использования приведенной выше формы. Что-то вроде:
import re
assert re.match(p1, some_text) == re.match(someProcess1(web_input), some_text)
assert re.match(p2, some_text) == re.match(someProcess2(web_input), some_text)
assert re.match(p3, some_text) == re.match(someProcess3(web_input), some_text)
assert re.match(p4, some_text) == re.match(someProcess4(web_input), some_text)
Что будет someProcess1 для someProcessN и почему?
Я полагаю, что someProcess2 не нужно ничего делать, а SomeProcess1 должен сделать некоторое преобразование в кодировке unicode. Для сырых строковых литералов я не знаю.