Путь к спасению избежал использования шаблона регулярных выражений Python - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь удалить экранированный шаблон регулярных выражений, чтобы применить его к строке.Это на самом деле динамично, я точно не знаю, как это будет выглядеть, но на протяжении всего моего тестирования я сталкивался с одной проблемой: строка с экранированным шаблоном регулярных выражений выглядит так:

\\d{4}

Я написал простое регулярное выражениекоторый заменяет каждую комбинацию обратной косой черты и символа просто символом

И я применяю это так:

sub(r"\\(.)", "\\1", escaped_pattern)

Но что это дает мне потомd{4} не \d{4}, как я ожидал.

Я пытался использовать необработанные строки для repl, escape \ unescape, он по-прежнему не возвращает того, что я ожидаю.Был бы признателен за любую помощь.

РЕДАКТИРОВАТЬ

escaped_pattern = settings.reg_exp
regexp = sub(r"\\(.)", "\\1", escaped_pattern)
search(regexp, string_to_regexp).group()[0]

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Основываясь на вашем обновлении, я почти уверен, что вы получите именно тот результат, который вам нужен, если вы просто перестанете пытаться удалить его.

import re
s1 = "1234astring"
matches = re.search("\\d{4}", s1) 
matches.group(0)
"1234"
matches.group()[0]
"1"
0 голосов
/ 21 мая 2019

Попробуйте r"\\\\(.)" в шаблоне поиска и '\\\1' в шаблоне замещения.здесь работает нормально: https://regex101.com/r/M3ikqj/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...