C#의 정규식

WBOY
WBOY원래의
2024-09-03 15:27:15474검색

C#에서는 정규식을 이용하여 패턴 매칭을 하고, C#에서는 정규식을 생성하기 위해 C#의 regex 클래스를 사용하는데, 정규식을 이용하여 문자열의 패턴 매칭과 교체에 대한 표준을 설정하고 이를 사용자를 통해 컴퓨터에 알려준다. 문자열에서 특정 패턴을 찾기 위해 찾고 있는 특정 패턴을 찾았을 때의 응답은 무엇이어야 하며 regex는 정규식의 약어입니다. C#의 전체 정규식은 텍스트를 식별하고 바꾸는 강력한 방법입니다. 특정 형식으로 정의된 문자열에서.

구문

다음은 C#에서 정규식에 사용되는 기본 구문 목록입니다. 그들은:

1. 수량자

중요 수량사 목록은 다음과 같습니다.

  • *: 앞의 문자가 0번 이상 일치합니다. 정규식 c*를 생각해 보세요. 이 표현식은 d, cd, ccd, cccd,….c를 nd의 거듭제곱과 일치시킵니다.
  • +: 앞의 문자가 한 번 이상 일치합니다. 정규식 c+d를 고려해보세요. 이 표현식은 cd, ccd, cccd,….c를 nd의 거듭제곱과 일치시킵니다.
  • ?: 앞의 문자가 0번 또는 1번 일치합니다. 정규식 c?d를 고려해보세요. 이 표현식은 d, cd와 일치합니다.

2. 특수문자

중요 특수문자 목록은 다음과 같습니다.

  •  ^: 이 특수 문자를 사용하여 문자열의 시작 부분을 일치시킵니다. ^Karnataka의 예를 생각해 보세요. 이 표현은 Karnataka가 우리 주와 일치합니다.
  •  $: 이 특수 문자를 사용하여 문자열의 끝을 일치시킵니다. Karnataka$의 예를 생각해 보세요. 이 표현은 Our state is Karnataka와 일치합니다. 
  • 점(.): 이 특수 문자를 사용하면 모든 문자가 한 번만 일치합니다. l.t(길이 = 3) 예를 생각해 보세요. 이 표현은 lit, lot, let과 일치합니다.
  • d: 이 특수 문자를 사용하여 숫자 문자를 일치시킵니다. Regex-[0-9] 예제를 고려해보세요. 이 표현식은 123, 456, 254 등에 일치합니다.
  • D: 이 특수 문자를 사용하여 숫자가 아닌 문자를 일치시킵니다. Regex-[^0-9] 예제를 고려해보세요. 이 표현식은 0~9 사이의 숫자로 구성된 숫자를 제외한 모든 항목과 일치합니다.
  • w: 이 특수 문자를 사용하면 영숫자와 "_"를 일치시킬 수 있습니다. 예를 들어 Regex- A ~ Z, 0 ~ 9, a ~ z, _(밑줄)을 고려하십시오. 이 표현식은 영숫자 “_”와 일치합니다.
  • W: 단어가 아닌 모든 문자는 이 특수 문자를 사용하여 일치됩니다. W의 예를 생각해 보세요. 이 표현은 "."와 일치합니다. “IR B2.8”
  • s: 공백 문자는 이 특수 문자를 사용하여 일치됩니다. ws의 예를 고려하십시오. 이 표현은 “IC B1.5”의 “C”와 일치합니다
  • S: 공백이 아닌 문자는 이 특수 문자를 사용하여 일치됩니다. 예시 sS를 고려해보세요. 이 표현식은 “IC__B1.5”의 “_”와 일치합니다

3. 캐릭터 클래스

대괄호 안에 문자를 넣어 그룹화할 수 있습니다. 이렇게 하면 입력에서 최소한 하나의 문자가 클래스의 모든 문자와 일치하게 됩니다.

[]: []를 사용하여 다양한 문자를 일치시킬 수 있습니다. [Xyz]의 예를 생각해 보세요. 이 표현식은 x, y, z 중 하나와 일치합니다.

[c-r]의 예를 생각해 보세요. 이 표현식은 c와 r 사이의 모든 문자와 일치합니다.

4. 그룹화 및 대안

괄호( 및 )를 사용하여 항목을 그룹화할 수 있습니다.

  • (): ()를 사용하여 표현식을 그룹화할 수 있습니다. (ab)+의 예를 생각해 보세요. 이 표현식은 ab, abab과 일치하고 aabb와 일치하지 않습니다.
  •  {}: 특정 횟수만큼 앞의 문자와 일치합니다. 다음을 사용하여 횟수를 지정할 수 있습니다.
  • n: 이전 요소가 정확히 n번 일치합니다. “,d{3}” 예를 생각해 보세요. 이 표현식은 1,123.40의 123과 일치합니다
  •  {n,m}: 이전 요소는 n번 이상 일치하지만 m번 이하입니다. “,d{2,3}”의 예를 생각해 보세요. 이 표현식은 1,123.40의 12 및 123과 일치합니다

C#에서 정규 표현식 작업

기본적으로 정규식 엔진에는 두 가지 유형이 있습니다. 텍스트 지향 엔진과 정규식 지향 엔진이 있습니다. 정규 표현식 지정 엔진은 정규 표현식의 다음 토큰을 다음 문자와 일치시키려고 정규 표현식을 검색합니다. 일치하는 항목이 발견되면 정규식은 진행되고, 그렇지 않으면 정규식의 이전 위치와 정규식 표현식을 통해 다른 경로를 시도할 수 있는 구문 분석할 문자열로 돌아갑니다. 텍스트 지향 엔진은 문자열의 다음 문자로 이동하기 전에 정규 표현식의 모든 순열을 시도하면서 문자열을 검색합니다. 역추적이나 역방향 텍스트 지향 엔진은 없습니다. 나중에 정확히 일치하는 항목을 찾을 가능성이 있더라도 항상 가장 왼쪽에 일치하는 항목이 정규식 엔진에 의해 반환됩니다. 엔진은 정규식이 문자열에 적용될 때마다 문자열의 첫 번째 문자로 시작합니다. 가능한 모든 순열이 첫 번째 문자에 적용되고 결과가 실패한 것처럼 보입니다. 그런 다음 순열이 문자열의 두 번째 문자로 이동되고 이 프로세스는 정규식 엔진이 정확히 일치하는 항목을 찾을 때까지 계속됩니다.

예를 들어보세요. 목욕하기 전에 욕조의 물을 확인하세요. 정규식 엔진은 위 문장에서 목욕이라는 단어를 찾도록 요청받습니다. 첫 번째 문자 C는 정규식 엔진에 의해 b와 일치하며 이는 실패입니다. 따라서 다음 문자 H는 정규식 엔진을 통해 b와 일치시키려고 시도하지만 이는 다시 실패합니다. 이런 일이 계속되고 정규식 엔진이 24번째 문자를 b와 일치시키려고 하면 일치합니다. 따라서 계속해서 욕조의 목욕이라는 단어를 목욕이라는 단어와 일치시키고 엔진은 욕조의 목욕이라는 단어를 올바른 일치로 보고하며 다른 일치 항목이 있는지 확인하기 위해 문에서 더 이상 진행되지 않습니다. 이것이 정규식 엔진이 내부적으로 작동하는 방식입니다.

C#의 정규 표현식 방법

C#의 정규식은 다음 방법을 사용합니다. 그들은:

  • public bool IsMatch(string input): regex 생성자에 의해 지정된 정규식은 이 방법을 사용하여 지정된 입력 문자열과 일치됩니다.
  • public bool IsMatch(string input, int startat): regex 생성자에 의해 지정된 정규식은 이 방법을 사용하여 지정된 시작 위치를 갖는 지정된 입력 문자열과 일치됩니다.
  • public static bool IsMatch(문자열 입력, 문자열 패턴): 메서드는 지정된 입력 문자열로 지정된 정규식과 일치합니다.
  •  공개 MatchCollection 일치(문자열 입력): 이 방법을 사용하여 지정된 입력 문자열에서 정규 표현식의 모든 항목을 검색합니다.
  • 공개 문자열 바꾸기(문자열 입력, 문자열 바꾸기): 이 방법을 사용하면 정규식과 일치하는 지정된 문자열을 모두 대체 문자열로 바꿉니다.
  • public string[] Split(string input): 정규식으로 지정된 위치는 이 방법을 사용하여 문자열 배열을 하위 문자열 배열로 분할하는 위치입니다.

C# 정규표현식 예제

휴대폰 번호 확인을 위해 정규식을 사용하는 방법을 보여주는 C# 프로그램

코드:

using System;
using System.Text.RegularExpressions;
class Check {
static void Main(string[] args)
{
//Mobile numbers are given as a input to an array of strings
string[] nos = {"9902147368",
"9611967273", "63661820954"};
foreach(string s in nos)
{
Console.WriteLine("The mobile number {0} {1} a valid number.", s,
checkvalid(s) ? "is" : "is not");
}
Console.ReadKey();
}
// Regex expressions are verified through this code block
public static bool checkvalid(string Number)
{
string cRegex = @"(^[0-9]{10}$)|(^\+[0-9]{2}\s+[0-9]
{2}[0-9]{8}$)|(^[0-9]{3}-[0-9]{4}-[0-9]{4}$)";
Regex res = new Regex(cRegex);
if (res.IsMatch(Number))
return (true);
else
return (false);
}
}

출력:

C#의 정규식

위 내용은 C#의 정규식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C#의 가상 키워드 다음 기사:C#의 가상 키워드