Regex corresponde a uma das duas palavras


301

Eu tenho uma entrada que pode ter apenas 2 valores appleou banana. Que expressão regular posso usar para garantir que uma das duas palavras foi enviada?


2
Em qual idioma / ambiente esse regex está sendo implementado? Regex parece sobrecarga desnecessária em muitas situações.
Mckmackusa

Respostas:


467

Isso fará:

/^(apple|banana)$/

para excluir a partir de cordas capturados (por exemplo $1, $2):

(?:apple|banana)

43
Para alguns, usar isso como um grupo de não captura será útil. O uso (?:apple|banna)corresponderá, mas não será adicionado à lista de seqüências capturadas (por exemplo $1, $2.. $N).
doub1ejack

Olá, pergunta rápida, o que devo fazer se não quiser que o applebanana corresponda?
Grover Reyes

O regex acima corresponde a maçã e banana, mas não corresponde a applebanana.
phlogratos 31/03

99

Existem diferentes mecanismos regex, mas acho que a maioria deles funcionará com isso:

apple|banana

55
Se você pretende colocar mais em sua regex, você precisa colocar parênteses em torno de suas palavras, assim: (apple|banana).
Brian J

mas como torná-lo insensível a maiúsculas e minúsculas?
Nitish 23/01

Está definido com a re.IGNORECASEbandeira. Por exemplo:re.compile("(apple|banana)", re.IGNORECASE)
Troels Ynddal 31/01

-8

Expressão regular /.txt|.tif/pode ser usada no SiteScope para localizar 'Correspondência de nome de arquivo' para o Monitor de diretório ao pesquisar dois tipos diferentes de arquivos - arquivos que terminam em .txt ou .tif

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.