C # - นิพจน์ทั่วไป

regular expressionเป็นรูปแบบที่สามารถจับคู่กับข้อความที่ป้อนได้ กรอบงาน. Net มีเครื่องมือนิพจน์ทั่วไปที่อนุญาตให้จับคู่ดังกล่าว รูปแบบประกอบด้วยตัวอักษรตัวดำเนินการหรือโครงสร้างอย่างน้อยหนึ่งตัวอักษร

โครงสร้างสำหรับการกำหนดนิพจน์ทั่วไป

มีประเภทอักขระตัวดำเนินการและโครงสร้างต่างๆที่ช่วยให้คุณกำหนดนิพจน์ทั่วไปได้ คลิกลิงก์ต่อไปนี้เพื่อค้นหาโครงสร้างเหล่านี้

  • ตัวละครหนี

  • คลาสตัวละคร

  • Anchors

  • การจัดกลุ่มโครงสร้าง

  • Quantifiers

  • โครงสร้าง Backreference

  • โครงสร้างทางเลือก

  • Substitutions

  • โครงสร้างเบ็ดเตล็ด

คลาส Regex

คลาส Regex ใช้สำหรับแสดงนิพจน์ทั่วไป มีวิธีการที่ใช้กันทั่วไปดังต่อไปนี้ -

ซีเนียร์ วิธีการและคำอธิบาย
1

public bool IsMatch(string input)

ระบุว่านิพจน์ทั่วไปที่ระบุในตัวสร้าง Regex พบการจับคู่ในสตริงอินพุตที่ระบุหรือไม่

2

public bool IsMatch(string input, int startat)

ระบุว่านิพจน์ทั่วไปที่ระบุในตัวสร้าง Regex พบการจับคู่ในสตริงอินพุตที่ระบุโดยเริ่มต้นที่ตำแหน่งเริ่มต้นที่ระบุในสตริง

3

public static bool IsMatch(string input, string pattern)

ระบุว่านิพจน์ทั่วไปที่ระบุพบการจับคู่ในสตริงอินพุตที่ระบุหรือไม่

4

public MatchCollection Matches(string input)

ค้นหาสตริงอินพุตที่ระบุสำหรับการเกิดขึ้นทั้งหมดของนิพจน์ทั่วไป

5

public string Replace(string input, string replacement)

ในสตริงอินพุตที่ระบุแทนที่สตริงทั้งหมดที่ตรงกับรูปแบบนิพจน์ทั่วไปด้วยสตริงแทนที่ที่ระบุ

6

public string[] Split(string input)

แยกสตริงอินพุตเป็นอาร์เรย์ของสตริงย่อยที่ตำแหน่งที่กำหนดโดยรูปแบบนิพจน์ทั่วไปที่ระบุในตัวสร้าง Regex

สำหรับรายการวิธีการและคุณสมบัติทั้งหมดโปรดอ่านเอกสารของ Microsoft ใน C #

ตัวอย่าง 1

ตัวอย่างต่อไปนี้ตรงกับคำที่ขึ้นต้นด้วย "S" -

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   class Program {
      private static void showMatch(string text, string expr) {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         
         foreach (Match m in mc) {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args) {
         string str = "A Thousand Splendid Suns";
         
         Console.WriteLine("Matching words that start with 'S': ");
         showMatch(str, @"\bS\S*");
         Console.ReadKey();
      }
   }
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Matching words that start with 'S':
The Expression: \bS\S*
Splendid
Suns

ตัวอย่าง 2

ตัวอย่างต่อไปนี้จับคู่คำที่ขึ้นต้นด้วย 'm' และลงท้ายด้วย 'e' -

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   class Program {
      private static void showMatch(string text, string expr) {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         
         foreach (Match m in mc) {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args) {
         string str = "make maze and manage to measure it";

         Console.WriteLine("Matching words start with 'm' and ends with 'e':");
         showMatch(str, @"\bm\S*e\b");
         Console.ReadKey();
      }
   }
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Matching words start with 'm' and ends with 'e':
The Expression: \bm\S*e\b
make
maze
manage
measure

ตัวอย่างที่ 3

ตัวอย่างนี้แทนที่ช่องว่างเพิ่มเติม -

using System;
using System.Text.RegularExpressions;

namespace RegExApplication {
   class Program {
      static void Main(string[] args) {
         string input = "Hello   World   ";
         string pattern = "\\s+";
         string replacement = " ";
         
         Regex rgx = new Regex(pattern);
         string result = rgx.Replace(input, replacement);

         Console.WriteLine("Original String: {0}", input);
         Console.WriteLine("Replacement String: {0}", result);    
         Console.ReadKey();
      }
   }
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

Original String: Hello World   
Replacement String: Hello World