이 정규 표현식이 공백과 일치하지 않는 이유는 무엇입니까?
-
05-07-2019 - |
문제
다음과 같은 정규식이 있습니다.
([0-9]+),'(.)':([0-9]+),(L|R|'.')
다음과 잘 일치합니다.
1,'a':1,R
그러나 교체하면 ㅏ 공백이 있으면 실패합니다.
1,' ':1,R
왜 그렇지 않습니까? . 일치합니까?공백은 문자로 분류되지 않나요?사용할 수 없습니다 \에스 탭과 줄 바꿈을 일치시키고 싶지 않기 때문입니다.나는 또한 다음을 시도했습니다.
([0-9]+),'(.| )':([0-9]+),(L|R|'.')
하지만 그것도 작동하지 않습니다. IgnorePatternWhitespace
활성화됨).
해결책
나는 당신이 보고 있는 것을 재현할 수 없습니다:
using System;
using System.Text.RegularExpressions;
class Test
{
static void Main()
{
Regex regex = new Regex("([0-9]+),'(.)':([0-9]+),(L|R|'.')");
Console.WriteLine(regex.IsMatch("1,' ':1,R"));
}
}
"True"를 인쇄합니다.
따옴표 사이에 다른 문자가 있을 수도 있나요?인쇄되지 않는 문자가 있습니까?텍스트는 어디에서 오는가?
다음과 같이 변경해 볼 수 있습니다.
([0-9]+),'([^']+)':([0-9]+),(L|R|'.')
따라서 따옴표 사이에 두 개 이상의 문자가 일치할 수 있습니다.
다른 팁
.NET에서 시도하지는 않았지만 DOT는 언어와 구현에 따라 다릅니다. 노력하다:
([0-9]+),'([.| ])':([0-9]+),(L|R|'.')
사용 0x0020 단일 공간 문자와 일치합니다.
제휴하지 않습니다 StackOverflow