[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] $