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?

CyberJunkie
fonte
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)
phlogratos
fonte
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
beijar
fonte
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

Deusa do sitescópio
fonte