Ini adalah pemahaman saya bahwa java.regex
paket tersebut tidak memiliki dukungan untuk grup bernama ( http://www.regular-expressions.info/named.html ) jadi dapatkah orang mengarahkan saya ke perpustakaan pihak ketiga yang melakukannya?
Saya telah melihat jregex tetapi rilis terakhirnya pada tahun 2002 dan tidak berhasil untuk saya (memang saya hanya mencoba sebentar) di bawah java5.
Jawaban:
( Pembaruan : Agustus 2011 )
Seperti yang disebutkan geofflane dalam jawabannya , Java 7 sekarang mendukung kelompok bernama .
tchrist menunjukkan dalam komentar bahwa dukungan terbatas.
Dia merinci batasan dalam jawaban besarnya " Java Regex Helper "
Java 7 regex bernama dukungan kelompok disajikan kembali pada bulan September 2010 di blog Oracle .
Dalam rilis resmi Java 7, konstruk untuk mendukung grup penangkap bernama adalah:
Alternatif lain untuk pra-Jawa 7 adalah:
Gabor Liptak menyebutkan (November 2012) bahwa proyek ini mungkin tidak aktif (dengan beberapa bug yang beredar ), dan yang garpu GitHub bisa dianggap sebagai gantinya.
( Jawaban asli : Jan 2009 , dengan dua tautan berikutnya sekarang terputus)
Anda tidak dapat merujuk ke grup yang disebutkan, kecuali jika Anda membuat kode versi Regex ...
Itulah tepatnya yang dilakukan Gorbush2 di utas ini .
Regex2
(implementasi terbatas, seperti yang ditunjukkan lagi oleh tchrist , karena hanya terlihat untuk pengidentifikasi ASCII. tchrist merinci batasannya sebagai:
Catatan: Anda dapat menemukan contoh rekursi regex sejati di Perl dan regex PCRE, sebagaimana disebutkan dalam Regexp Power , spesifikasi PCRE , dan String Pencocokan dengan slide Parentheses Seimbang )
Contoh:
Tali:
RegExp:
Mengakses
Menggantikan
(ekstrak dari implementasi)
sumber
Untuk orang yang datang selarut ini: Java 7 menambahkan grup bernama. Dokumentasi Matcher.group (String groupName).
sumber
Ya tapi itu berantakan peretasan kelas matahari. Ada cara yang lebih sederhana:
http://code.google.com/p/named-regexp/
sumber
Masalah apa yang Anda dapatkan dengan jregex ? Ini bekerja dengan baik untuk saya di bawah java5 dan java6.
Jregex melakukan pekerjaan dengan baik (bahkan jika versi terakhir adalah dari tahun 2002), kecuali jika Anda ingin menunggu javaSE 7 .
sumber
Bagi mereka yang menjalankan pre-java7, grup yang diberi nama didukung oleh joni (port Java pada pustaka regigur Oniguruma ). Dokumentasi jarang, tetapi telah bekerja dengan baik untuk kita.
Binari tersedia melalui Maven ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
sumber
Sebuah pertanyaan yang agak lama tapi saya mendapati diri saya membutuhkan ini juga dan bahwa saran di atas tidak memadai - dan karenanya - mengembangkan bungkus tipis sendiri: https://github.com/hofmeister/MatchIt
sumber