[c#] 전체 문자열을 정규식과 어떻게 일치 시키나요?

전체 문자열이 내 쿼리와 일치하는 경우에만 일치하는 정규식이 필요합니다.

예를 들어 “Red October”라는 이름의 영화를 검색하는 경우 정확한 제목 (대소 문자 구분 안 함) 만 일치시키고 “The Hunt For Red October”와 같은 제목은 일치시키지 않습니다. 이 작업을 수행하는 방법을 잘 모르겠습니다. 아는 사람 있어요?

감사!



답변

다음 정규식을 시도하십시오.

^Red October$

기본적으로 정규식은 대소 문자를 구분합니다. ^에 표시된와는 일치하는 텍스트의 시작 $끝.


답변

일반적으로 기본 설정 ^$앵커는 정규식이 전체 문자열과 일치하는지 확인하는 좋은 방법입니다.

하지만 몇 가지주의 사항 :

정규식에 대체가있는 경우 정규식을 ^and로 둘러싸 기 전에 비 캡처 그룹으로 묶어야합니다 $.

^foo|bar$

물론 다릅니다

^(?:foo|bar)$

또한, ^$(/ 끝 시작 다른 의미에 걸릴 수 있습니다 라인 대신의 시작 / 끝의 문자열을 특정 옵션이 설정되어있는 경우). 정규식을 지원하는 텍스트 편집기에서는 일반적으로 이것이 기본 동작입니다. 일부 언어, 특히 Ruby에서는이 동작을 끌 수도 없습니다.

따라서 전체 문자열의 시작 / 끝에서만 일치하도록 보장되는 또 다른 앵커 세트가 있습니다.

\A 문자열의 시작 부분과 일치합니다.

\Z 문자열의 끝이나 마지막 줄 바꿈 전에 일치합니다.

\z 문자열의 맨 끝에 일치합니다.

그러나 모든 언어가 이러한 앵커, 특히 JavaScript를 지원하는 것은 아닙니다.


답변

^$수정자를 사용하여 정규식 패턴이 문자열의 시작과 끝을 기준으로 배치되는 위치를 나타냅니다.

Regex.Match("Red October", "^Red October$"); // pass
Regex.Match("The Hunt for Red October", "^Red October$"); // fail


답변

이 질문에 답하기에는 조금 늦을 수 있지만 다른 사람에게는 유용 할 수 있습니다.

가장 간단한 방법 :

var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex );
if(match.Success && match.Value.Length == someString.Length){
    //pass
} else {
    //fail
}


답변

정규식을 ^(문자열 시작) 및 $(문자열 끝 ) 으로 묶어야합니다 .

^Red October$


답변

미안하지만 약간 불분명합니다.

내가 읽은 것에서 간단한 문자열 비교를 원합니다. 이를 위해 정규식이 필요하지 않습니다.

string myTest = "Red October";
bool isMatch = (myTest.ToLower() == "Red October".ToLower());
Console.WriteLine(isMatch);
isMatch = (myTest.ToLower() == "The Hunt for Red October".ToLower());


답변

문자열에서 문자 마이너스 a를 한 번만 잡으려면 myRegex.IsMatch ()로 확인할 수 있습니다.

^ [^ e] [e] {1} [^ e] $