찾다
백엔드 개발C#.Net 튜토리얼C# 정규식 메타문자에 대한 자세한 설명

이 문서에서는 C# 정규 표현식의 메타 문자를 정리합니다. 정규 표현식은 문자로 구성된 표현식입니다. 각 문자는 규칙을 나타냅니다. 표현식의 문자는 일반 문자와 메타 문자의 두 가지 유형으로 나뉩니다. 일반 문자는 문자 그대로의 의미가 변하지 않고 정확하게 일치하는 방식으로 텍스트와 일치하는 문자를 의미하는 반면, 메타 문자는 특별한 의미를 가지며 문자 유형을 나타냅니다.

C# 정규식 메타문자에 대한 자세한 설명

텍스트를 문자 스트림으로 생각하면 각 문자는 특정 위치에 배치됩니다(예: 정규 표현식 "Roomddd"). 처음 4개 문자 Room은 일반 문자이고 다음 문자는 이스케이프 문자이며 다음은 이스케이프 문자입니다. 문자 d는 메타문자 d를 형성합니다. 이는 해당 위치에 임의의 숫자가 있음을 의미합니다.

C# 정규식 메타문자에 대한 자세한 설명

은 정규식 언어로 설명됩니다. 정규식 "Roomddd"은 총 7자를 캡처하며, 이는 "Room으로 시작하고 세 개의 숫자로 끝나는" 문자열 유형을 나타냅니다. 문자열 유형을 패턴이라고 하며, 일반 패턴이라고도 합니다.

1. 이스케이프 문자는 일반 문자를 특별한 의미가 있는 메타 문자로 이스케이프하는 데 사용됩니다.

t: 가로 탭 문자

v: 세로 탭 문자

r: 캐리지 return

n: 줄 바꿈

\: 문자를 나타냅니다. 즉, 이스케이프된 문자를 일반 문자로 이스케이프합니다.

": 문자를 나타냅니다.", C#에서는 큰따옴표가 사용됩니다. 문자열을 정의하는 경우 큰따옴표 문자열에 포함된 내용은 "

2.

Character 클래스 로 표시됩니다. 정규 매칭을 수행할 때 입력 텍스트는 순차 문자 스트림으로 간주되며, 문자 클래스 메타 문자 일치하는 개체는 문자이며, 소위 캡처된 문자는 메타 문자로 캡처된 문자가 다른 메타 문자와 일치하지 않으며 후속 메타 문자는 나머지 텍스트에서만 다시 일치될 수 있음을 의미합니다.

일반적으로 사용되는 문자 클래스 메타 문자입니다.

[char_group]: 문자 그룹의 모든 문자와 일치합니다.

[^char_group]: 문자 그룹을 제외한 모든 문자와 일치합니다.

[first-last]: 첫 번째부터 마지막 ​​문자 범위의 모든 문자와 일치합니다. 범위에는 첫 번째와 마지막이 포함됩니다. n을 제외한 모든 문자와 일치합니다.

w: 모든 단어(단어) 문자와 일치하며, 단어 문자는 일반적으로 A-Z, a-z 및 0-9를 나타냅니다.

W: 단어가 아닌 모든 문자와 일치합니다. A-Z, a-z 및 0-9를 제외한 문자를 참조합니다

s: 공백 문자와 일치합니다.

S: 공백이 아닌 문자와 일치합니다. 문자

d: 숫자와 일치합니다.

D: 숫자가 아닌 문자와 일치합니다.

이스케이프 문자도 문자 클래스 메타문자에 속하며,

문자도 일반 일치를 수행할 때 캡처됩니다. , Locator

로케이터에 의해 일치된(또는 캡처된) 객체가 위치인지 여부를 결정합니다. 패턴 일치는 문자 위치를 기준으로 성공합니다. 로케이터는 문자를 캡처하지 않으며 너비가 0입니다. 일반적으로 사용되는 위치 지정 기호는 다음과 같습니다.

^: 기본적으로 문자의 시작 위치와 일치합니다. 문자열; 여러 줄 모드에서 각 줄의 시작 위치와 일치합니다.

$: 기본적으로 문자열의 끝 위치와 일치합니다. 또는 여러 줄 모드에서 문자열의 끝 위치와 일치합니다. 각 줄 끝 앞의 위치 또는 각 줄 끝 앞의 위치.

A: 문자열의 시작 위치와 일치합니다.

Z: 문자열의 끝 위치 또는 n 앞의 위치와 일치합니다. 문자열 끝에서

z: 문자열의 끝 위치와 일치합니다.

G: 이전 일치 항목의 끝 위치와 일치합니다.

b: 단어의 시작 또는 끝 위치와 일치합니다.

IV. 수량자, 탐욕스러운 및 게으른

수량자는 이전 일반 패턴의 발생 횟수를 제한하는 것을 의미합니다: 탐욕 모드와 게으른 모드. 모드에서 그리디 모드는 가능한 많은 문자를 일치시키는 것을 의미하고, 게으른 모드는 가능한 한 적은 문자를 일치시키는 것을 의미합니다. 기본적으로 수량자는 게으른 모드를 활성화하기 위해 욕심 모드입니다.

C# 정규식 메타문자에 대한 자세한 설명

*: 0회 이상 표시

+: 1회 이상 표시

?: 0~1회 표시 ​​

{n}: n회 표시

{n,}: n회 이상 표시

{n,m}: n번부터 m번까지 나타납니다.

여러 번 발생한다는 것은 이전 메타 문자가 여러 번 나타남을 의미합니다. 예를 들어 d{2}는 dd와 동일하며 두 개의 숫자만 나타나며 요구 사항이 없습니다. 두 숫자가 같다는 것입니다. 동일한 두 숫자를 표현하려면 그룹화를 사용해야 합니다.

5. 문자 그룹화 및 캡처

() 괄호는 표현식의 범위를 결정할 뿐만 아니라 그룹을 생성합니다. () 안의 표현식은 두 그룹이 일치하는 텍스트가 정확히 동일함을 의미합니다. 그룹 정의를 위한 기본 구문:

(pattern)

이 유형의 그룹화는 문자를 캡처합니다. 소위 캡처된 문자는 다음을 참조합니다. 메타 문자로 캡처된 문자는 다른 메타 문자 및 후속 메타 문자와 일치하지 않습니다. 남은 텍스트에서만 다시 일치시키는 기능만 제공됩니다.

1. 그룹 번호 지정 및 이름 지정

기본적으로 각 그룹에는 왼쪽에서 오른쪽으로 자동으로 그룹 번호가 할당됩니다. 그룹의 괄호가 나타납니다. 첫 번째 그룹의 그룹 번호는 1이고 두 번째 그룹의 그룹 번호는 2입니다. 그룹 이름을 지정할 수도 있습니다. 이 그룹은 이름이 지정된 그룹이라고도 합니다. 번호는 1부터 시작하여 1씩 증가합니다. :

(?< name > pattern)

일반적으로 그룹은 명명된 그룹과 번호가 지정된 그룹으로 구분됩니다. 그룹을 참조하는 방법은 다음과 같습니다.

그룹 이름으로 그룹을 참조하려면: k

그룹 번호로 그룹을 참조하려면 :number

그룹은 뒤로만 참조할 수 있습니다. 즉, 정규식 텍스트의 왼쪽부터 시작하여 그룹을 먼저 정의한 다음 정의한 후 나중에 참조할 수 있습니다.

정규식에서 그룹을 참조하는 구문은 "숫자"입니다. 예를 들어 "1"은 그룹 1과 일치하는 문자열을 나타내고, "2"는 그룹 2와 일치하는 문자열을 나타냅니다.

예를 들어 ".*?1>"의 경우 그룹을 참조할 때

유효

를 일치시킬 수 있습니다. 해당 텍스트는 정확히 동일합니다.

2. 그룹화 생성자

그룹화 구성 방법은 다음과 같습니다.

(패턴): 일치하는 하위 표현식을 캡처하고 그룹에 그룹 번호 할당

(? 패턴): 일치하는 하위 표현식을 명명된 그룹으로 캡처

(?:pattern): 캡처되지 않은 그룹은 그룹 번호가 할당되지 않음

(?> 패턴): 탐욕스러운 그룹핑

3, 탐욕스러운 그룹핑

# 🎜🎜#그리디 그룹핑도 비역추적 그룹화라고 합니다. 이 그룹화는 역추적을 비활성화하고 정규식 엔진은 입력 텍스트에서 가능한 한 많은 문자를 일치시킵니다. 더 이상 일치하는 항목이 없으면 추가 패턴 일치를 시도하기 위한 역추적은 없습니다.

(?> pattern )

4. 둘 중 하나를 선택하세요.

|는 둘 중 하나를 의미합니다. |는 왼쪽과 오른쪽의 표현식을 두 부분으로 나눕니다.

pattern1 | Pattern2

Six, 너비가 0인 어설션

Zero-width는 너비가 0임을 의미합니다. , 일치는 위치이므로 일치하는 부분 문자열은 일치 결과에 나타나지 않으며 Assertion은 판단 결과를 참조하며 해당 Assertion이 true인 경우에만 일치가 성공한 것으로 간주됩니다.

로케이터의 경우 문장의 시작과 끝을 일치시킬 수 있습니다

(^ $) 또는 단어의 시작과 끝을 일치 (b) #🎜🎜 #, 이러한 메타 문자는 특정 문자와 일치하는 것이 아니라 이 위치가 특정 조건을 충족함을 지정하여 하나의 위치에만 일치하므로 너비가 0인 어설션이라고 합니다. 소위 제로 너비는 어떤 문자와도 일치하지 않지만 위치와 일치한다는 것을 의미합니다. 소위 주장은 판단을 의미하며 정규식은 주장이 참인 경우에만 계속 일치합니다. 너비가 0인 어설션은 단순히 문장이나 단어를 지정하는 것이 아니라 정확한 위치와 일치할 수 있습니다. 정규 표현식은 텍스트를 왼쪽에서 오른쪽으로의 문자 흐름으로 처리합니다. 오른쪽으로 가는 것을 뒤로 호출합니다.

(뒤를 살펴보세요)

, 왼쪽으로 가는 것을 앞으로라고 합니다. (미래를 보세요) . 정규식의 경우 지정된 패턴(Pattern)이 일치하는 경우에만 어설션이 True인 것을 긍정 표현식이라고 하고, 일치하지 않는 패턴이 True인 것을 부정 표현식이라고 합니다. 일치 방향과 일치의 질적 특성에 따라 너비가 0인 어설션은 네 가지 유형으로 나뉩니다.

(?= 패턴): 앞으로 , 긍정적 주장

(?! 패턴): 앞으로, 부정적 주장

(?

( ?

1. 순방향 긍정적 주장

앞방향 긍정적 주장은 패턴의 끝에 존재해야 함을 정의합니다. 텍스트(또는 오른쪽)이지만 이 패턴과 일치하는 하위 문자열은 일치 결과에 나타나지 않습니다. 일반적으로 정방향 어설션은 정규식의 오른쪽에 나타나며 텍스트의 오른쪽이 특정 패턴을 충족해야 함을 나타냅니다. 🎜🎜#

 (?= subexpression )

정방향 긍정 어설션을 사용하여 퍼지 일치를 확인합니다. 접미사는 특정 문자를 포함해야 합니다.

\b\w+(?=\sis\b)

정규식 분석:

b: 다음을 의미합니다. 단어의 경계

w+: 해당 단어가 한 번 이상 나타남을 나타냅니다.

(?=sisb): 정방향 긍정 어설션, s는 공백 문자를 나타냅니다. 일반 문자, 완전 일치, b는 단어 경계입니다.

분석에 따르면 이 정규식과 일치하는 텍스트에는 is라는 단어가 단어의 일부가 아니라 별도의 단어로 포함되어야 한다는 결론을 내릴 수 있습니다. 예를 들어보세요

Sunday is a weekend day 匹配该正则,匹配的值是Sunday,而The island has beautiful birds 不匹配该正则。

2、后向肯定断言

后向肯定断言定义一个模式必须存在于文本的开始(或左侧),但是该模式匹配的子串不会出现在匹配的结果中,后向断言通常出现在正则表达式的左侧,表示文本的左侧必须满足特定的模式:

(?<= subexpression )

使用后向肯定断言可以定一个模糊匹配,前缀必须包含特定的字符:

(?<=\b20)\d{2}\b

对正则表达式进行分析:

(?

\d{2}:表示两个数字,数字不要求相同

\b:单词的边界

该正则表达式匹配的文本具备的模式是:文本以20开头、以两个数字结尾。

七,用正则从格式化的文本中扣值

有如下的JSON格式的文本,从文本中扣出字段(CustomerId、CustomerName、CustomerIdSource和CustomerType)的值:

{"CustomerDetails":"[{\"CustomerId\":\"57512f19\",\"CustomerName\":\"cust xyz\",\"CustomerIdSource\":\"AadTenantId\",\"CustomerType\":\"Enterprise\"}]"}

注意,该文本转换为C#中的字符时,需要对双引号和转义字符进行转义。由于这四个字段提取规则相同,可以写一个通用的模式来提取:

public static string GetNestedItem(string txt, string key)
{
    string pat = string.Format("(?<=\\\\\"{0}\\\\\":\\\\\").*?(?=\\\\\")", key);
    return Regex.Match(txt, pat, RegexOptions.IgnoreCase).Value;
}

正则表达式得解析:

(?

.*?:懒惰模式,匹配尽可能少的文本

(?=\\\\\"):前向断言,用于匹配字段值得双引号

本文来自 C#.Net教程 栏目,欢迎学习!  

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

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

C#과 .NET의 관계는 분리 할 수 ​​없지만 같은 것은 아닙니다. C#은 프로그래밍 언어이며 .NET은 개발 플랫폼입니다. C#은 코드를 작성하고 .NET의 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행되는 데 사용됩니다.

C# .NET의 지속적인 관련성 : 현재 사용법을 살펴보십시오.C# .NET의 지속적인 관련성 : 현재 사용법을 살펴보십시오.Apr 16, 2025 am 12:07 AM

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

웹에서 데스크톱으로 : C# .NET의 다양성웹에서 데스크톱으로 : C# .NET의 다양성Apr 15, 2025 am 12:07 AM

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# .net 및 미래 : 신기술에 적응C# .net 및 미래 : 신기술에 적응Apr 14, 2025 am 12:06 AM

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다Apr 13, 2025 am 12:03 AM

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색Apr 12, 2025 am 12:02 AM

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C# .NET : 핵심 개념 탐색 및 프로그래밍 기초C# .NET : 핵심 개념 탐색 및 프로그래밍 기초Apr 10, 2025 am 09:32 AM

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C# .NET 응용 프로그램 테스트 : 장치, 통합 및 엔드 투 엔드 테스트C# .NET 응용 프로그램 테스트 : 장치, 통합 및 엔드 투 엔드 테스트Apr 09, 2025 am 12:04 AM

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구