정규식에서 input 값을 비교시 공백을 무시하고 싶습니다.

string a = "서 물 시 여 의 도";
var value = Regex.Replace(a, "서물시", "서울시");
// value = "서울시 여 의 도"

“서 물 시” 를 “서물시” 로 공백을 무시하고 찾는 방법을 모르겠습니다.
“서 물 시” 사이에 공백이 1개 이상일수 있어서 공백 무시가 필요합니다.

Regex.Replace의 4번째 인자값인 RegexOptions.IgnorePatternWhitespace
는 2번째 인자의 pattern의 공백을 무시하는 옵션이더군요.
저는 1번째 인자의 input의 공백을 무시하고 싶습니다.

input에 공백을 전부 제거해서 찾아도 되지만 변경 후 공백을 다시 복원해야 합니다.
어렵네요ㅠ

2개의 좋아요

공백을 제거한 입력값이 항상 서물시로 동일하다면 각 단어 사이에 공백 문자와 수량자를 조합해 해결할 수 있습니다.

string a = "서 물 시 여 의 도";
var value = Regex.Replace(a, @"서\s*물\s*시", "서울시");
Console.WriteLine(value);

\s는 공백 문자를 인식하며, *(애스터리스크)는 앞 항목이 0번 이상 일치함을 지정합니다.

7개의 좋아요

감사합니다. 제가 원하는 기능입니다.

4개의 좋아요

공백을 복원해야 한다고 해서 이런 내용으로 잘 못 이해하고 답글 달 고 있었네요 ㅎㅎ…;;

var replaced = Regex.Replace("서 물 시 여 의 도", @"서(\s*)물(\s*)시", match => $"서{match.Groups[1]}울{match.Groups[2]}시");
// replaced = "서 울 시 여 의 도";
7개의 좋아요

오! 매력적인 답변입니다.

6개의 좋아요

@루나시아 님과 동일한 답변으로 알려준
ChatGPT 의 답변 이네요 ㅎㅎ


image

7개의 좋아요

우와. 후덜덜 하네요.

5개의 좋아요

이러다 저 나중에 백수되는 거 아니겠죠…? ㅎㅎ…

6개의 좋아요

오 이런게 있군요…

4개의 좋아요

저도 해봤는대 와…이거 진심인가요

4개의 좋아요

신기하네요ㄷㄷㄷㄷ
ChatGPT 이런게 있는지도 몰랐어요

2개의 좋아요

허허… ㅋㅋㅋㅋㅋㅋㅋㅋㅋ :sweat_smile::sweat_smile:

2개의 좋아요