C # Regex dalam contoh

Terjemahan artikel disiapkan khusus untuk siswa kursus "Pengembang C #" .




Kelas Regex mengimplementasikan ekspresi reguler dalam C #. Pada artikel ini, Anda akan belajar cara menggunakan C # Regex untuk memvalidasi berbagai input pengguna.

Regex di C # mengimplementasikan ekspresi reguler. Kelas C # Regex menawarkan metode dan properti untuk menganalisis teks besar untuk mencari pola karakter. Pada artikel ini, Anda akan belajar cara menggunakan kelas .NET Regex di C #.

Ekspresi reguler


Ekspresi reguler digunakan untuk memeriksa apakah string cocok dengan pola. Ekspresi reguler (ekspresi reguler atau regex, atau regexp) adalah urutan karakter yang menentukan pola. Suatu pola dapat terdiri dari literal, angka, karakter, operator, atau konstruksi. Pola ini digunakan untuk menemukan kecocokan dalam string atau file.
Ekspresi reguler sering digunakan ketika memeriksa input, parsing dan menemukan string. Misalnya, memeriksa tanggal lahir yang valid, nomor jaminan sosial, nama lengkap, di mana nama dan nama keluarga dipisahkan oleh koma, mencari jumlah kemunculan substring, mengganti substring, format substring, format tanggal, format email yang valid, format mata uang, dan sebagainya.

Regex kelas


Di .NET, kelas Regex mewakili mesin regex. Ini dapat digunakan untuk mem-parsing teks dalam jumlah besar dengan cepat untuk menemukan pola karakter tertentu, mengekstrak, mengedit, mengganti atau menghapus substring teks, dan menambahkan string yang diekstraksi ke koleksi untuk menghasilkan laporan.

Kelas Regex didefinisikan dalam namespace System.Text.RegularExpressions. Konstruktor dari kelas Regex mengambil sebagai parameter string template bersama dengan parameter opsional lainnya.

Cuplikan kode berikut ini membuat ekspresi reguler dari suatu pola. Di sini, polanya sesuai dengan kata yang dimulai dengan huruf "M".

//    ,     "M" string pattern = @"\b[M]\w+"; //   Regex Regex rg = new Regex(pattern); 


Fragmen kode berikut berisi teks panjang dengan nama-nama penulis yang perlu dianalisis.

 //   string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll"; 


Metode Kecocokan digunakan untuk menemukan semua kecocokan dalam ekspresi reguler dan mengembalikan MatchCollection.

 //    MatchCollection matchedAuthors = rg.Matches(authors); 


Potongan kode selanjutnya melewati koleksi korek api.

 //     for (int count = 0; count < matchedAuthors.Count; count++) Console.WriteLine(matchedAuthors[count].Value); 


Ini kode lengkapnya:

 //    ,     "M" string pattern = @"\b[M]\w+"; //   Regex Regex rg = new Regex(pattern); //   string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll"; //    MatchCollection matchedAuthors = rg.Matches(authors); ///     for (int count = 0; count < matchedAuthors.Count; count++) Console.WriteLine(matchedAuthors[count].Value); 


Pada contoh di atas, kode mencari karakter "M". Tetapi bagaimana jika kata itu dimulai dengan "m." Cuplikan kode berikut menggunakan parameter RegexOptions.IgnoreCase sehingga Regex tidak peka huruf besar-kecil.

 //    ,     "M" string pattern = @"\b[m]\w+"; //   Regex Regex rg = new Regex(pattern, RegexOptions.IgnoreCase); 


Mengganti beberapa spasi dengan Regex


Metode Regex.Replace() digunakan untuk mengganti string yang cocok dengan string baru. Contoh berikut mencari beberapa spasi dalam string dengan satu spasi.

 //      string badString = "Here is a strig with ton of white space." ; string CleanedString = Regex.Replace(badString, "\\s+", " "); Console.WriteLine($"Cleaned String: {CleanedString}"); 


Cuplikan kode berikut menggantikan spasi dengan '-'.

 string CleanedString = Regex.Replace(badString, "\\s+", "-"); 


Memisahkan string menjadi karakter menggunakan Regex


Dalam contoh berikut, pola ekspresi reguler [az] + dan metode Regex.Split() digunakan untuk membagi string menjadi karakter, bukan Regex.Split() .

 //     string azpattern = "[az]+"; string str = "Asd2323b0900c1234Def5678Ghi9012Jklm"; string[] result = Regex.Split(str, azpattern, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500)); for (int i = 0; i < result.Length; i++) { Console.Write("'{0}'", result[i]); if (i < result.Length - 1) Console.Write(", "); } 


Ekspresi Reguler dalam C #


Ekspresi reguler adalah standar pencocokan pola untuk parsing dan mengubah string, dan memungkinkan pengguna untuk mengekspresikan bagaimana program komputer harus mencari pola yang ditentukan dalam teks, dan kemudian apa yang harus dilakukan ketika setiap kecocokan ditemukan dengan pola yang diberikan. Terkadang mereka disingkat "regex". Mereka adalah cara yang ampuh untuk menemukan dan memodifikasi string yang mengambil format tertentu.

Berikut adalah contoh kode C # sederhana yang menunjukkan bagaimana ekspresi reguler digunakan.

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace RegularExpression1 { class Program { static void Main(string[] args) { Regex r = new Regex(@"^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}"); //  Regex    . string[] str = { "+91-9678967101", "9678967101", "+91-9678-967101", "+91-96789-67101", "+919678967101" }; //         . foreach (string s in str) { Console.WriteLine("{0} {1} a valid mobile number.", s, r.IsMatch(s) ? "is" : "is not"); //  IsMatch    ,   ,     . } } } } 


Berikut adalah penjelasan rinci tentang ekspresi reguler dan penggunaannya dalam C # dan .NET:
Ekspresi Reguler dalam C #

Regex untuk memeriksa email


Untuk menguji beberapa alamat email, kita dapat menggunakan ekspresi reguler berikut. Kami memisahkan alamat menggunakan pembatas ';'

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;]{0,1}\s*)+$

Jika Anda ingin menggunakan pembatas ',' maka gunakan berikut ini

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[,]{0,1}\s*)+$

dan jika Anda ingin menggunakan kedua pembatas ',' dan ';' lalu gunakan ini

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;,.]{0,1}\s*)+$

Dengan demikian, menggunakan ekspresi reguler di atas, Anda dapat memeriksa satu atau beberapa alamat sekaligus.

Cari tahu lebih lanjut di sini: Regex untuk memeriksa beberapa alamat email .

Memvalidasi input pengguna dengan ekspresi reguler


Artikel ini menjelaskan cara menggunakan ekspresi reguler (kelas Regex dari System.Text.RegularExpressions namespace) di C # dan .NET.

Kita dapat menggunakan metode Regex.Match, yang mengambil input dan ekspresi reguler, dan mengembalikan kesuksesan jika

 if (!Regex.Match(firstNameTextBox.Text, "^[AZ][a-zA-Z]*$").Success) {} if (!Regex.Match(addressTextBox.Text, @"^[0-9]+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(cityTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(stateTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(zipCodeTextBox.Text, @"^\d{5}$").Success) { if (!Regex.Match(phoneTextBox.Text, @"^[1-9]\d{2}-[1-9]\d{2}-\d{4}$").Success) 


Cari tahu lebih lanjut di sini:
Memvalidasi input pengguna dengan ekspresi reguler


Pisahkan string menggunakan Regex.split (regex) di C #


Di bagian ini, kita akan belajar cara memecah string menggunakan RegEx di C #. Regex memecah string berdasarkan suatu pola. Ini memproses pembatas yang ditentukan sebagai templat. Inilah sebabnya mengapa Regex lebih baik daripada string. Berikut adalah beberapa contoh cara memecahkan string menggunakan Regex di C #. Mari kita menulis kodenya.

Untuk menggunakan Regex untuk membagi string, tambahkan ruang nama berikut.

 using System; using System.Text.RegularExpressions; using System.Collections.Generic; 


Contoh 1:

Pisahkan angka dari string menggunakan Regex.

 string Text = "1 One, 2 Two, 3 Three is good."; string[] digits = Regex.Split(Text, @"\D+"); foreach (string value in digits) { int number; if (int.TryParse(value, out number)) { Console.WriteLine(value); } } 


Kode di atas memecah string menggunakan \ D +, dan menampilkan angka dengan mengulangi hasilnya.

Cari tahu lebih lanjut di sini:

Pisahkan string menggunakan ekspresi reguler dalam C #

Ganti karakter khusus dari string dengan regex


Di bagian ini, saya akan memberi tahu Anda cara mengganti karakter khusus dengan ekspresi reguler di C #.

Jika Anda memiliki string dengan karakter khusus dan Anda ingin menghapus atau menggantinya, Anda dapat menggunakan ekspresi reguler untuk ini.

Gunakan kode berikut:

 Regex.Replace(your String, @"[^0-9a-zA-Z]+", "") 


Kode ini akan menghapus semua karakter khusus, tetapi jika Anda tidak ingin menghapus beberapa karakter khusus, misalnya, koma "," dan titik dua ":" - buat perubahan berikut:

 Regex.Replace(Your String, @"[^0-9a-zA-Z:,]+", "") 


Dengan cara yang sama, Anda dapat membuat perubahan sesuai dengan kebutuhan Anda.

Catatan:

Perlu dicatat bahwa ekspresi reguler bukan obat mujarab untuk setiap manipulasi string kecil. Jika Anda membutuhkan penguraian sederhana yang disediakan oleh kelas String atau kelas lain, coba dan gunakan.


Untuk bacaan lebih lanjut



Jika Anda baru mengenal ekspresi reguler, saya sarankan membaca artikel ini, Pengantar Ekspresi Reguler .

Inilah artikel lain: " Menggunakan Ekspresi Reguler di C # "

Source: https://habr.com/ru/post/id469989/


All Articles