Membangun ringkasan ekspresi reguler
Konstruksi pertandingan
karakter
x Karakter x
// karakter backslash
/0n karakter n dengan nilai oktal 0 (0 <= n <= 7)
/0nn karakter nn dengan nilai oktal 0 (0 <= n <= 7)
/0mnn karakter mnn dengan nilai oktal 0 (0 <= m <= 3, 0 <= n <= 7)
/xhh karakter hh dengan nilai heksadesimal 0x
/Uhhhh karakter hhhhh dengan nilai heksadesimal 0x
/T tab ('/u0009')
/n Karakter Baris Baru (Line Break) ('/U000A')
/r carriage return karakter ('/u000d')
/f break halaman ('/u000c')
/simbol alarm (bel) ('/u0007')
/E Escape Character ('/u001b')
/cx sesuai dengan x
Kelas Karakter
[ABC] A, B atau C (Kelas Sederhana)
[^ABC] Karakter apa pun kecuali A, B, atau C (negatif)
[A-ZA-Z] A ke Z atau A ke Z, surat di kedua ujungnya disertakan (kisaran)
[AD [MP]] A ke D atau M ke P: [A-DM-P] (Union)
[az && [def]] d, e atau f (persimpangan)
[az && [^bc]] a to z, kecuali b dan c: [ad-z] (minus)
[az && [^mp]] a to z, bukan m ke p: [a-lq-z] (minus)
Kelas karakter yang telah ditentukan
. Karakter apa pun (mungkin atau tidak cocok dengan karakter akhir garis)
/D NUMBER: [0-9]
/D Non-Number: [^0-9]
Karakter Whitespace: [/t/n/x0b/f/r]
Karakter non-whitespace: [^/s]
/W Karakter Kata: [A-ZA-Z_0-9]
/W karakter non-kata: [^/w]
Kelas Karakter POSIX (hanya US-ASSASII)
/p {lebih rendah} karakter alfabet huruf kecil: [az]
/p {Upper} Capital Letter Character: [AZ]
/p {ASCII} semua ASCII: [/x00-/x7f]
/p {alpha} karakter alpha: [/p {lebih rendah}/p {atas}]
/p {digit} nomor desimal: [0-9]
/p {alnum} karakter alfanumerik: [/p {alpha}/p {digit}]
/p {punct} tanda baca :! "#$%& '()*+,-./:; <=>?@[/]^_` {|} ~
/p {grafik} karakter yang terlihat: [/p {alnum}/p {punct}]
/p {print} karakter yang dapat dicetak: [/p {grafik}/x20]
/p {blank} ruang atau karakter tab: [ /t]
/p {cntrl} karakter kontrol: [/x00-/x1f/x7f]
/p {xDigit} nomor hexadecimal: [0-9a-fa-f]
/p {space} whitespace karakter: [/t/n/x0b/f/r]
Java.lang.CHARACTER CLASS (Tipe Karakter Java Sederhana)
/p {javalowercase} setara dengan java.lang.character.islowercase ()
/p {javauppercase} setara dengan java.lang.character.isuppercase ()
/p {javawhitespace} setara dengan java.lang.character.iswhitespace ()
/p {javamirrored} setara dengan java.lang.character.ismirrored ()
Blok dan kelas Unicode
/p {ingreek} karakter dalam blok Yunani (blok sederhana)
/p {lu} huruf kapital (kategori sederhana)
/p {sc} simbol mata uang
/P {ingreek} semua karakter, kecuali di blok Yunani (negatif)
[/p {l} && [^/p {lu}]] semua huruf, kecuali huruf kapital (minus)
Pencocokan batas
^ Awal garis
Akhir dari $ line
/B batas kata
/B batas non-kata
/Awal input
/G akhir pertandingan sebelumnya
Akhir input /z, hanya untuk karakter akhir terakhir (jika ada)
Akhir input /z
Kata kuantitatif serakah
X? X, sekali atau sekali, tidak
X* x, nol atau beberapa kali
X+ x, sekali atau lebih
X {n} x, tepat n kali
X {n,} x, setidaknya n kali
X {n, m} x, setidaknya n kali, tetapi tidak lebih dari m kali
Kata kuantitatif yang enggan
X?? X, sekali atau sekali, tidak
X*? X, nol atau beberapa kali
X+? X, sekali atau lebih
X {n}? X, tepatnya n kali
X {n,}? X, setidaknya n kali
X {n, m}? X, setidaknya n kali, tetapi tidak lebih dari m kali
Kata -kata kuantitatif posesif
X?+ X, sekali atau sekali, tidak
X*+ x, nol atau beberapa kali
X ++ x, sekali atau lebih
X {n}+ x, tepat n kali
X {n,}+ x, setidaknya n kali
X {n, m}+ x, setidaknya n kali, tetapi tidak lebih dari m kali
Operator logis
Xy x tumit y
X | yx atau y
(X) x, sebagai kelompok penangkapan
Kutipan Kembali
/n Grup penangkapan ke -n yang cocok
Mengutip
/Tidak ada, tapi kutip karakter berikut
/Q Tidak ada, tetapi mengutip semua karakter sampai /e
/E tidak ada, tetapi mengakhiri referensi dimulai dengan /q
Konstruksi Khusus (tidak ditutup)
(?: x) x, sebagai kelompok non-penangkapan
(? IDMSUX -IDMSUX) Tidak ada, tetapi tidak akan cocok dengan flag IDMSUX ON - OFF
)
kelompok non-penangkapan (? = x) x, melalui lookahead positif nol-lebar
(?! X) x, melalui nol lebar negatif lookahead
(? <= X) x, melalui lookbehind positif nol-lebar
(? <! X) x, lookbehind negatif melalui lebar nol
(?> X) x, sebagai kelompok non-penangkapan independen
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Backslashes, Escapes, dan Referensi
Karakter backslash ('/') digunakan untuk merujuk konstruksi pelarian, sebagaimana didefinisikan dalam tabel di atas, dan juga untuk merujuk karakter lain yang akan ditafsirkan sebagai konstruksi yang tidak dibungkus. Oleh karena itu, ekspresi // cocok dengan satu backslash, dan /{cocok dengan braket kiri.
Adalah salah untuk menggunakan backslash sebelum karakter alfabet yang tidak mewakili konstruksi pelarian; Mereka dicadangkan untuk ekstensi bahasa ekspresi reguler di masa depan. Backslash dapat digunakan sebelum karakter non-alfabet, terlepas dari apakah karakter tersebut bukan bagian dari konstruksi yang melarikan diri.
Menurut persyaratan spesifikasi bahasa Java, backslash dalam string kode sumber java ditafsirkan sebagai unicode melarikan diri atau pelarian karakter lainnya. Oleh karena itu, dua backslash harus digunakan dalam string literal untuk menunjukkan bahwa ekspresi reguler dilindungi dan tidak ditafsirkan oleh kompiler bytecode java. Misalnya, ketika ditafsirkan sebagai ekspresi reguler, string literal "/b" cocok dengan karakter backspace tunggal, dan "// b" cocok dengan kata batas. String literal "/(halo/)" adalah ilegal dan akan menyebabkan kesalahan waktu kompilasi; Untuk mencocokkan string (halo), string literal "// (halo //)" harus digunakan.
Kelas Karakter
Kelas karakter dapat muncul di kelas karakter lain dan dapat berisi operator serikat (secara implisit) dan operator persimpangan (&&). Operator Union mewakili kelas yang berisi setidaknya semua karakter di salah satu kelas operannya. Operator persimpangan mewakili kelas yang berisi semua karakter di dua kelas operannya secara bersamaan.
Prioritas operator kelas karakter adalah sebagai berikut, diatur secara berurutan dari tertinggi ke terendah:
1 Escape literal/x
2 pengelompokan [...]
3 range az
4 Union [AE] [IU]
5 persimpangan [az && [aeiou]]
Perhatikan bahwa set metacharacter yang berbeda sebenarnya terletak di dalam kelas karakter, bukan di luar kelas karakter. Misalnya, ekspresi reguler. Makna khusus hilang di dalam kelas karakter, dan ekspresi - menjadi kisaran yang membentuk metacharacters.
Karakter akhir garis
Karakter akhir garis adalah urutan satu atau dua karakter yang menandai akhir dari garis urutan karakter input. Kode berikut diakui sebagai karakter akhir baris:
Karakter Baris Baru (Line Newline) ('/n'),
Karakter pengembalian carriage ("/r/n") diikuti oleh karakter garis baru,
Karakter pengembalian kereta yang terpisah ('/r'),
Karakter baris berikutnya ('/u0085'),
Pembatas garis ('/u2028') atau
Pemisah paragraf ('/u2029).
Jika mode UNIX_LINES diaktifkan, karakter garis baru adalah karakter ujung garis yang dikenali secara unik.
Jika bendera DOTALL tidak ditentukan, ekspresi reguler. dapat mencocokkan karakter apa pun (kecuali ujung garis).
Secara default, ekspresi reguler ^ dan $ abaikan ujung garis dan hanya cocok dengan awal dan akhir dari seluruh urutan input, masing -masing. Jika mode multilin diaktifkan, kecocokan terjadi hanya setelah awal input dan ujung garis (ujung input). Ketika dalam mode multiline, $ cocok hanya sebelum garis berakhir atau di akhir urutan input.
Grup dan tangkap
Grup penangkapan dapat diberi nomor dengan menghitung kurung terbuka mereka dari kiri ke kanan. Misalnya, dalam ekspresi ((a) (b (c)))), ada empat kelompok seperti itu:
1 ((a) (b (c)))
2 /a
3 (b (c))
4 (c)
Grup nol selalu mewakili seluruh ekspresi.
Grup penangkapan dinamai dengan cara ini karena dalam pertandingan, setiap setelah urutan input yang cocok dengan kelompok -kelompok tersebut disimpan. Selanjutnya yang ditangkap kemudian dapat digunakan dalam ekspresi melalui referensi belakang atau dapat diperoleh dari pencocokan setelah operasi pencocokan selesai.
Input penangkapan yang terkait dengan grup selalu merupakan selanjutnya yang paling cocok dengan grup. Jika kelompok dihitung lagi karena kuantisasi, nilai yang ditangkap sebelumnya akan dipertahankan pada kegagalan perhitungan kedua (jika ada). Misalnya, mencocokkan string "ABA" dengan ekspresi (a (b)?)+ Akan mengatur grup kedua ke "B". Di awal setiap pertandingan, semua input yang ditangkap dibuang.
Kelompok yang dimulai dengan (?) Adalah kelompok non-penangkapan murni yang tidak menangkap teks dan tidak menghitung terhadap jumlah kombo.
Di atas adalah semua konten dari ekspresi reguler (direkomendasikan oleh artikel tata bahasa) yang dibawa kepada Anda oleh editor. Saya harap semua orang dapat mendukung wulin.com lebih banyak ~