Quero usar a entrada de um usuário como um padrão de expressão regular para uma pesquisa sobre algum texto. Funciona, mas como posso lidar com casos em que o usuário coloca caracteres que têm significado no regex? Por exemplo, o usuário deseja procurar o Word (s)
: o mecanismo de expressão regular assumirá o (s)
grupo. Eu quero tratá-lo como uma corda "(s)"
. Posso executar replace
a entrada do usuário e substituir o (
com \(
e o )
com, \)
mas o problema é que precisarei substituir todos os possíveis símbolos regex. Você conhece alguma maneira melhor?
repl
argumento parare.sub
é uma string, não uma regex; aplicarre.escape
a ele não faz sentido em primeiro lugar.repl
argumento não é uma string simples, é analisado. Por exemplo,re.sub(r'(.)', r'\1', 'X')
retornaráX
, não\1
.repl
argumento: stackoverflow.com/q/49943270/247696Por favor, tente:
\ Q e \ E como âncoras
Coloque uma condição Ou para corresponder a uma palavra completa ou a uma expressão regular.
Link de referência: como combinar uma palavra inteira que inclui caracteres especiais na regex
fonte