Требования:
- Преобразуйте % в .*? в предоставленных шаблонах регулярных выражений.
- Экранируйте специальные символы регулярных выражений только при необходимости, избегая ненужных escape-последовательностей. .
- Сохранять целостность существующих шаблонов регулярных выражений.
- Ввод: %основной аккаунт.*?Годовая процентная доходность%
Выход exp: .*?основной счет.*?Годовая процентная доходность.*?
Строка: Ваш основной счет предлагает годовую процентную доходность в размере 3,25%. Этот счет идеально подходит для сбережений. - Ввод: процентная ставка на вашем счете ((\ d+\.\d+)|[^.])*?([\d+.]+%)
Выходные данные: процентная ставка по ваша учетная запись ((\d+\.\d+)|[^.])*?([\d+.]+.*?)
Строка: Процентная ставка по вашему счету составляет 1,75%, а рекламные ставки достигают 2,00%.
Код: Выделить всё
1: Overdraft Protection Service Fee[^.]*?(\\$\\d+)
2: APY was accurate as of ([^\\s]+)
3: Cuenta de Ahorro opcional 6Obtenga hasta un ([^\\s]*) de porcentaje de rendimiento anual
4: \\bVisa\\b
5: withdrawals(.*?) per day
6: ([^a-zA-Z\\s]+) total is calculated based on all withdrawals
7: activate .*? calling ([^\\s]+)
Код: Выделить всё
def _sanitize_regex(rhs: string):
# Replace '%' wildcards with '.*?' for regex matching
rhs = rhs.replace('%', '.*?')
# Define special characters that need to be escaped in regex
special_chars = ['$', '^', '[', ']', '{', '}', '|', '+', '', '\\']
sanitized_rhs = []
inside_group = False # Track whether we're inside a group (e.g., parentheses or brackets)
for char in rhs:
# Handle opening and closing of groups
if char in ['(', '[', '{']:
inside_group = True
sanitized_rhs.append(char)
elif char in [')', ']', '}']:
inside_group = False
sanitized_rhs.append(char)
# Escape special characters only if they are not inside a group
elif char in special_chars:
if not inside_group: # Only escape if we are not inside a group
sanitized_rhs.append(f"\\{char}")
else:
sanitized_rhs.append(char) # Do not escape inside groups
else:
sanitized_rhs.append(char)
# Join sanitized parts back together
return ''.join(sanitized_rhs)
- процентная ставка по вашему счету ((\d+.\d+)|[^.])*?([\d+.]+%)
дополнительный \ был добавлен приведенным выше кодом. Можете ли вы помочь мне очистить строки, чтобы получить правильное регулярное выражение, учитывая вышеуказанные требования?
Подробнее здесь: https://stackoverflow.com/questions/790 ... eplacement