-
Ekspresi reguler:
Ekspresi reguler memungkinkan pengguna untuk membuat pola yang cocok dengan menggunakan serangkaian karakter khusus, dan kemudian membandingkan pola yang cocok dengan objek target seperti file data, masukan program, dan masukan formulir pada halaman WEB pola, jalankan program yang sesuai. Keteraturan telah memenangkan cinta para programmer karena kesederhanaan, kepraktisan, dan kecepatannya. & #65279;
Beberapa pemikiran tentang menulis regex:
1. Pertama, tentukan aturannya. Jenis string apa yang perlu Anda cocokkan, terdiri dari bagian apa, dan karakteristik apa yang dimilikinya.
2. Usulkan satuan terkecil. Terkadang, beberapa aturan yang cocok diulangi. Kita dapat mencoba menemukan poin-poin umum dan merencanakannya menjadi sebuah aturan.
3. Tulislah aturan-aturan beraturan satu per satu menurut aturannya dan satuan terkecilnya.
4. Satukan kombinasi keteraturan satuan tersebut untuk membentuk keteraturan lengkap yang Anda inginkan.
Di sini kita perlu memahami beberapa tag dasar dan penggunaannya. Aturan apa pun terdiri dari tag dasar. Markup biasa juga sangat sederhana, jadi sebaiknya Anda memahaminya.
Tag yang umum digunakan dalam ekspresi reguler
1 Penanda yang umum digunakan dalam ekspresi reguler 2 ^ |. Awal dari sebuah baris atau string 3 $ |. Akhir dari sebuah baris atau string 4 |. Karakter selain baris baru 5 w | Karakter bukan kata 7 d |. Angka (setara dengan [0-9]) 8 D |. Karakter bukan spasi 9 10 A |. Awal string 11 Z | Akhir string 13 14 s |. Karakter kosong 15 S |. Karakter tidak kosong 16 17 b |. Batas kata (di luar []) 18 B |. ] |. Karakter apa pun dalam himpunan, dengan tanda hubung di tengah, mewakili rentang, seperti: [0-9], [az]21 |. 0 atau 1 ekspresi sebelumnya 22 | 25 * |. nol atau lebih ekspresi sebelumnya 26 *? |. nol atau lebih ekspresi sebelumnya (tidak serakah) 27 + |. 1 atau lebih ekspresi sebelumnya 28 +? |. mn ekspresi sebelumnya 30 {m,n}? |. mn ekspresi sebelumnya (tidak serakah) 31 32 33 Juga {?=} { ?!} (?>) (?#) (?imx-imx) dll.
Contoh paling mendasar:
1 # Mencocokkan seluruh string 2 put /ruby/ =~ "ruby" # 0 3 menempatkan /ruby/ =~ "Ruby" # nil 4 5 # Mencocokkan awal dan akhir suatu baris atau string 6 str = "abcdef" 7 menempatkan str 8 menempatkan /^abc/ =~ str # 0 9 menempatkan /def$/ =~ str # 310 11 str = "abcndefn" 12 menempatkan /^abc/ =~ str # 013 menempatkan /def$/ =~ str # 414 put /abc/ =~ str # 015 put /def/ =~ str # 416 17 #Cocokkan awal dan akhir string itu sendiri 18 str = "abcndefn" 19 put /Aabc/ =~ str # 020 puts /defZ/ =~ str # 421 puts /defz/ =~ str # nil22 23 #Cocokkan karakter kata 24 put "Cocokkan karakter kata" 25 pattern = /w/26 putting pattern = ~ "abc " # 027 pola penempatan =~ "." # nil28 29 # Bilangan bulat yang cocok 30 # d Angka 31 # D Bukan angka 32 penempatan "Nomor yang cocok" 33 penempatan /d/ =~ "122" #034 menempatkan /D / =~ "122" #nil35 menempatkan /D/ =~ "abc" #036 37 38 #Border 39 str = "Ini temanmu!"40 menempatkan str41 menempatkan str.gsub(/b/ ,"|" ) # |Ini|. |adalah|. |teman|. |teman|!42 menempatkan str.gsub(/B/,"-") # Ini temanmu!-43
Contoh kualifikasi
1 menempatkan "qualifier" 2 menempatkan "qualifier: *" 3 menempatkan /(abc)*/ =~ "a" # 0 4 menempatkan /(abc)*/ =~ "abc" # 0 5 6 7 menempatkan "kualifikasi Kualifikasi: +" 8 menempatkan /(abc)+/ =~ "a" # nil 9 menempatkan /(abc)+/ =~ "abc" # 010 11 menempatkan "Kualifikasi: ?" 12 menempatkan /(abc)?/ =~ " c" # 013 menempatkan /(abc)?/ =~ "abc" # 014 15 16 menempatkan "Kualifikasi: {n}"17 menempatkan /(abc){2}/ =~ "abc" # nil18 menempatkan /(abc) {2}/ =~ "abcabc" # 019 20 menempatkan "Kualifikasi: {n,}"21 menempatkan /(abc){2,}/ =~ "abc" # nil22 menempatkan /(abc){ 2,}/ = ~ "abcabc" # 023 24 menempatkan "Kualifikasi: {n,m}"25 menempatkan /(abc){2,3}/ =~ "abc" # nil26 menempatkan /(abc){2, 3}/ =~ " abcabcabc" # 027 28 menempatkan "Kualifikasi: *?" 29 menempatkan /(abc)*?/ =~ "a" # 030 menempatkan /(abc)*?/ =~ "abcabc" # 031 32 menempatkan "Kualifikasi: +? " 33 menempatkan /(abc)+?/ =~ "a" # nil34 menempatkan /(abc)+?/ =~ "abcabc" # 035 36 menempatkan "Kualifikasi: ??"37 menempatkan /(abc)??/ = ~ "a" # 038 put /(abc)??/ =~ "abcabc" # 039 40 41 #match, {1} {3}42 # {3} bisa cocok, maka {1} pasti cocok, tapi kebalikannya tidak benar 43 # Rentang pencocokan: {1} > {3}
Contoh umum:
1 masukkan "contoh" 2 #Cocokkan nomor telepon: 3 #Umumnya, nomor telepon Cina terdiri dari 7-8 digit, kode area terdiri dari 3-4 digit bilangan bulat, digit pertama kode area adalah 0, dan pemisah '-' adalah digunakan di tengah 4 #Perhatikan batasan pertama dan terakhir Simbol 5 pola = /^0d{2,3}-d{7,8}$/ 6 pola put =~ "010-82809999" # 0 7 pola puting =~ "00010-82809999" # nihil 8 9 #Cocokkan nomor hp 10 # Diawali dengan 1, digit kedua adalah 3, 5, 8, 11 digit 11 pola = /^1[3,5,8] d{9}$/12 putting pattern =~ "15810990001" #013 14 #Nomor KTP 15 pola = /d{18}|d{15}/16 17 #Cocokkan IP18 #Empat kelompok bilangan bulat tidak lebih besar dari 255, dipisahkan dengan '.' 19 menempatkan "IP" 20 num = /^d|[01]?d{1,2}|2[0-4]d|25[0-5]/21 pola = /^(#{num}.){3} #{num}$/22 #Keseluruhan: pola = /^(^d|[01]?d{1,2}|2[0- 4]d|25[0-5].) {3}^d|[01]?d{1,2}|2[0-4]d|25[0-5]$/ 23 pola puting =~ "127.0.0.1" # 024 pola puting =~ "254.255.255.255"25 26 #Alamat email cocok 27 pola = /^w+@w+.w+$/ #Ini tidak ada '-' 28 pola = /^[w-]+@[w- ]+.[w-]+$/29 menempatkan pola =~ " [email protected] " #030 31 # Cocokkan url32 # http:// www.google.cn33 pola = /(http|https|ftp): (//|\\)((w)+[.]){1,}(net|com|cn|org| cc|tv|[0-9]{1,3})( ((/[~]*|\[~]*)34 (w)+)|[.](w)+ )*(((([?](w)+){ 1}[=]*))*((w)+){1}([&](w)+[=]( w)+)*)*/35 36 pola penempatan =~ " http://www.google.cn?uid=123 " #0
lainnya
Arti keserakahan
1 menempatkan "serakah" 2 #Greedy berarti mencocokkan string terpanjang 3 # '.' Artinya: karakter selain baris baru 4 str = "tempat laut bertemu dengan daratan yang pucat pasi" 5 menempatkan str 6 match = /.* the/.match(str) 7 menempatkan match[0] # dimana laut bertemu dengan, * serakah. Jika tidak ingin serakah, tambahkan + '?' 8 #*?non-greedy 9 match = /.*?the/.match(str)10 put match[0] # di mana the11 12 str.insert( 0,"Halo n")13 kecocokan = /.*?the/.match(str)14 menempatkan kecocokan[0] #di mana
Pratinjau positif dan negatif
1 #Pratinjau positif dan negatif 2 menempatkan "Pratinjau positif dan negatif" 3 s1 = "Kamus Dunia Baru" 4 s2 = "Simfoni Dunia Baru" 5 s3 = "Tatanan Dunia Baru" 6 7 reg = /Dunia Baru (?=Kamus| Simfoni)/ 8 m1 = reg.match(s1) 9 penempatan m1.to_a[0] # "Dunia Baru"10 m2 = reg.match(s2)11 penempatan m2.to_a[0] # "Dunia Baru"12 penempatan reg .match(s3) # nil13 14 menempatkan "pratinjau negatif"15 16 reg = /New World (?!Symphony)/ # Tidak ada "Symphony" setelah "New World" 17 menempatkan reg.match(s1).to_a[0 ] # "Dunia Baru"18 menempatkan reg.match(s2).to_a[0] # nil19 menempatkan reg.match(s3).to_a[0] # "Dunia Baru"
-