문제

다음과 같은 반대가 왜 일치하지 않는지 궁금합니다.

string query = "\"1 2\" 3";
string pattern = string.Format(@"\b{0}\b", Regex.Escape("\"1 2\""));
string repl = Regex.Replace(query, pattern, "", RegexOptions.CultureInvariant);

단어 경계 문자 ( b)를 제거하면 pattern, 그것은 괜찮습니다. ' b'에 대해 이것을 넘어갈 수있는 것이 있습니까?

도움이 되었습니까?

해결책

인용문은 단어 캐릭터가 아니므로 b가 일치하지 않을 것입니다. 인용하기 전에 단어 캐릭터가 없습니다. 따라서 인용하기 전에 단어 문자와 비 단어 문자 사이에는 전환이 없습니다. 그래서 일치하지 않습니다.

귀하의 의견에서 문자열에서 단어 문자를 제거하려고합니다. 그렇게하는 가장 간단한 방법은 교체하는 것입니다. \w 빈 줄로 :

string repl = Regex.Replace(query, "\w", "", RegexOptions.CultureInvariant);

다른 팁

당신은 공백을 기대하고 있습니다. 하나를 찾지 못합니다. 바꾸다

string query = "\"1 2\" 3";

~와 함께

string query = "\" 1 2 \" 3";

그리고 내가 무슨 뜻인지 알게 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top