string input = "They ate a donut", output = "a donut was eaten by ${someone}.";
Regex r = new Regex("(?<someone>) ate a donut");
if (r.IsMatch(input))
{
foreach (string s in r.GetGroupNames())
{
Debug.WriteLine(r.Replace(input, output));
}
}
컨텍스트는 "도넛이 먹었습니다"라고 표시하지만 대신 "도넛 도넛을 먹었습니다."라고 표시됩니다.이 Regex 연산이 작동하지 않는 이유는 무엇입니까?
대체 이유가 무엇인지를 계속 찾고 있기 때문에 그 이유가 확실하지 않습니다.
마지막으로 Regex r에는 하나의 명명 된 그룹 만 있으므로 루프의 반복이 하나만 있으면 안됩니다. 앞에서 언급 한 출력의 두 줄을 얻습니다.
그 덕분에, 고마워! 나는 거기에있는 캡처 그룹이 나머지 캐릭터를 포착 할 것이라고 생각했습니다. 이제 다소 어리석은 느낌이 들었습니다. – user3624514