Regex mencocokkan satu dari dua kata

301

Saya memiliki input yang hanya dapat memiliki 2 nilai appleatau banana. Apa ekspresi reguler yang dapat saya gunakan untuk memastikan bahwa salah satu dari dua kata itu dikirimkan?

CyberJunkie
sumber
2
Dalam bahasa / lingkungan apa regex ini diterapkan? Regex tampaknya seperti overhead yang tidak perlu dalam banyak situasi.
mickmackusa

Jawaban:

467

Ini akan melakukan:

/^(apple|banana)$/

untuk mengecualikan dari string yang ditangkap (mis. $1, $2):

(?:apple|banana)
phlogratos
sumber
43
Untuk beberapa orang, menggunakan ini sebagai grup yang tidak menangkap akan berguna. Menggunakan (?:apple|banna)akan cocok, tetapi tidak akan menambahkannya ke daftar string yang diambil (misalnya $1, $2.. $N).
doub1ejack
Hai pertanyaan cepat, apa yang harus saya lakukan jika saya tidak ingin applebanana cocok?
Grover Reyes
Regex di atas cocok dengan apel dan pisang, tetapi tidak cocok dengan applebanana.
phlogratos
99

Ada berbagai mesin regex tetapi saya pikir sebagian besar dari mereka akan bekerja dengan ini:

apple|banana
smoak
sumber
55
Jika Anda berencana untuk menempatkan lebih banyak di regex Anda, Anda harus menempatkan tanda kurung di sekitar kata-kata Anda, seperti ini: (apple|banana).
Brian J
tetapi bagaimana membuatnya case sensitif?
Nitish
Itu diatur dengan re.IGNORECASEbendera. Contoh:re.compile("(apple|banana)", re.IGNORECASE)
Troels Ynddal
-8

Ekspresi reguler /.txt|.tif/dapat digunakan di SiteScope untuk menemukan 'Pencocokan nama file' untuk direktori Monitor ketika mencari dua jenis file yang berbeda - file yang berakhiran .txt atau .tif

Dewi sitescope
sumber