본문 바로가기

C#/정규 표현식

C#에서 정규 표현식을 사용하여 문자열을 분할하는 방법 (Regex.Split 메서드)

“Sword, Spear ,Bow , Shield,Gun”

 

다음과 같은 문자열에서 "Sword"와 같은 단어를 추출하고 싶을 때

 

단어 사이에는 콤마(,)로 구분돼 있는데 콤마 앞뒤에 공백이 존재할 가능성이 있다.

 

String 클래스에 있는 Split 메서드로 처리한다면

var text = “Sword, Spear ,Bow , Shield,Gun”;
string[] words = text.Split(',');

단어 앞뒤에 있는 공백이 처리가 안되고 그대로 문자열에 대입이된다.

 

 

 

Regex 클래스에 있는 Split 메서드를 이용하면 정규 표현식을 통해 일치한 부분으로 구분할 수 있으므로 String 클래스에 있는 Split 메서드보다 유연하게 처리할 수 있다.

var text = “Sword, Spear ,Bow , Shield,Gun”;
var pattern = @”\s*,\s*”;
string[] substrings = Regex.Split(text, pattern);

 

 

@”\s*,\s*”‘,’ (앞 뒤 공백 없음) ‘ ,’ (앞 공백) ‘, ‘ (뒤 공백) 같은 문자열과 일치하여 공백까지 처리하여 구분할 수 있게된다.