이 정규식 아래에서 -aaaa 및 -cccc는 캡처하지만 -eee는 캡처하지 않습니다. 어떻게 할 수 있습니까?끝을 포함하여 문자 사이의 정규식
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.*?) ");
이 정규식 아래에서 -aaaa 및 -cccc는 캡처하지만 -eee는 캡처하지 않습니다. 어떻게 할 수 있습니까?끝을 포함하여 문자 사이의 정규식
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.*?) ");
문자열의 끝뿐만 아니라 단어/비 단어 경계와 일치하는 공간 대신 "단어 경계"/\b/
를 사용하여 현재 당신의 정규식 캡처 그룹 뒤에 후행 공간이 필요
Regex.Matches(keywords, @"-(\w+)");
MatchCollection worldColNegEnd = Regex.Matches(keywords, @"-(.*?)\b"
단어 경계 공간보다 낫다, 나는 뇌가 그것의 목적을 방귀를 뀌어 때문에 다른 사람이하지만 upvotes주세요.
?
도 원본에 포함 시켰는지 잘 모르겠으나, *
은 0 개 이상 일치와 일치하므로 필요하지 않습니다. 문자에 어떻게 될 것인가에 따라,
Regex.Matches(keywords, @"-(.*?)\b");
나 :
: 문자열, 그냥 패턴과 일치하는 "단어 문자"/\w/
를 사용합니다. 문자열 "aaa"와 "ccc"는 이것을 가지고 있지만 "eee"는 그렇지 않습니다.
대신 대시 이후에 발생 어떤 문자를 일치의, 기로 인해 공백이 아닌 문자를 일치 시도 :
@"-(\S*?)"
사용 당신은 정확하게 당신이 무엇
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-(.+?)\b");
keywords = "-aaa bbb -ccc -eee";
MatchCollection wordColNegEnd = Regex.Matches(keywords, @"-\w+");
를 지정하지 않은 여기 일치 시키려고.
그러나 나는 그것이 바로, 당신이 -
사용하여이 정규식 시작하는 알파 문자열과 일치 할 이해하는 경우 : -[a-z]+
@Blorgbeard : 나는 거의 항상'쓰기 [^]'대신'를 그래서 그 논리에 익숙하다. 나는 '\ b'를 사용하여 다른 사람의 응답에 맞추어 그것을 고쳤습니다. – Guvante