В python есть ли лучший способ очистки строк поиска регулярных выражений, содержащих символы, которые необходимо экранировать? - PullRequest
1 голос
/ 18 февраля 2020

В приведенном ниже примере я хочу вернуть True только для последней строки в Серии. Это означает, что я должен добавить условное экранирование любых символов плюс, чтобы они действительно были найдены, и он не берет на себя свою специальную функцию регулярного выражения.

import pandas as pd
testseries=pd.Series(["product a basic","product a","product a+","product b basic","product b","product b+"])

#this string will be unknown in practice
searchstring="b+"

# Necessary cleaning conditional
if "+" in searchstring:
    searchstring = searchstring.replace("+","\\+")

#Search is actually performed
print(searchstring)
testseries.str.contains(searchstring)

На практике я не буду знать, что такое строка поиска собирается быть. Существует ли функция или другой подход для обеспечения правильного экранирования любых символов, которые необходимо экранировать?

Я не хочу продолжать создавать постоянно растущую цепочку условных выражений, которые очищают строку поиска, или это неизбежно?

1 Ответ

2 голосов
/ 18 февраля 2020

Модуль python re имеет функцию escape(). Вот пример, как его использовать:

>>> import re 
>>> re.escape('b+')
'b\\+'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...