C#에서 WinForms와 함께 NET 2.0을 사용하고 있습니다. 나는 정규 표현식에 큰 문제가있다. 간단한 문자열에 4 개 이상의 문자 단어에 콜론을 추가하려고합니다. 콜론을 한 번 추가하면 코드가 더 이상 추가되지 않아야합니다.C# regex - 내 문자열과 일치하지 않습니다.
Regex lbls = new Regex(@"^\s*(?<lbl>[A-Za-z0-9_]{4,})", RegexOptions.Multiline); // Use a regex to obtain all 4 letter words in string
MatchCollection matches = lbls.Matches(text); // text is my string
foreach (Match m in matches)
{
string mm = m.Groups["lbl"].Value; // Matches are stored in this group.
if (!Regex.IsMatch(text, @"^\s*\b" + mm + @":\b", RegexOptions.Multiline))
{
text = Regex.Replace(text, @"\b" + mm + @"\b", mm + ":", RegexOptions.Multiline);
}
}
문자열이 "테스트"라고 가정합니다. 즉 출력은 "TEST :"이어야합니다. 그러나 코드를 한 번 더 실행하면 텍스트는 "TEST :"로 유지되어야하지만 그렇지 않으면 "TEST ::"가됩니다. 콜론이 계속 추가됩니다. 왜 이런거야? 내 if 문이 완전히 정확합니다.
예,하지만 혼란 스럽습니다. 문제가 어디에 있습니까? 또한 "TEST"가 아닌 첫 번째 반복에서 "TEST :"값을 검색하지 않습니까? 검색에 콜론이 있습니다. – david
방금 답변을 업데이트하여 귀하의 의견을 답변했습니다. IF 진술서에서 콜론을 움직이면 필요한 것을 얻을 수 있다고 생각합니다. 희망합니다. –
그래, 고쳐서 지금 문제가 생겼어. 나는 바깥쪽에 바보 같은 실수 대신에 단어 경계 안쪽에 배치했다. 그 점을 지적 해 주셔서 감사합니다. – david