Saya sedang mencari cara untuk melakukan pertandingan regex pada string di Ruby dan membuatnya mengalami hubungan pendek pada pertandingan pertama.
String yang saya proses panjang dan dari apa yang tampak seperti cara standar ( match
metode) akan memproses semuanya, mengumpulkan setiap kecocokan, dan mengembalikan objek MatchData yang berisi semua kecocokan.
match = string.match(/regex/)[0].to_s
capture
argumen - yang memungkinkan Anda mengembalikan tangkapan alih-alih pertandingan penuh.Anda dapat menggunakan
[]
: (yang sepertimatch
)sumber
Jika hanya keberadaan jodoh yang penting, Anda bisa pergi bersamanya
Bagaimanapun,
match
seharusnya hanya mengembalikan klik pertama, saatscan
menelusuri seluruh string. Karena itu jikasumber
Saya belum yakin apakah fitur ini keren atau benar-benar gila, tetapi regex Anda dapat menentukan variabel lokal.
(Diambil dari http://ruby-doc.org/core-2.1.1/Regexp.html ).
sumber
regex =~ string", not when
string = ~ regex`Ekspresi Reguler (regex) tidak lain adalah mesin keadaan terbatas (FSM).
FSM mencoba menjawab pertanyaan "Apakah keadaan ini mungkin atau tidak?"
Itu terus mencoba untuk membuat pola yang cocok sampai kecocokan ditemukan (sukses), atau sampai semua jalur dieksplorasi dan tidak ada kecocokan yang ditemukan (gagal).
Tentang kesuksesan, pertanyaan "Apakah keadaan ini mungkin atau tidak?" telah dijawab dengan "ya". Karenanya, tidak diperlukan pencocokan lebih lanjut dan regex kembali.
Lihat ini dan ini untuk lebih lanjut tentang ini.
Lebih lanjut: berikut adalah contoh menarik untuk mendemonstrasikan cara kerja regex. Di sini, regex digunakan untuk mendeteksi apakah suatu bilangan yang diberikan adalah bilangan prima. Contoh ini ada di perl, tapi bisa juga ditulis dengan ruby.
sumber