Python 관련 Posting 에서 해당 내용에 대해서 적었습니다.
http://devluna.blogspot.kr/2015/08/python-15-regular-expressions.html
위 Link를 참조해주세요.
2. Regex Class
C#에서 Regular Expression을 지원해주는 class 입니다.
full namespace는 System.Text.RegularExpressions.Regex 입니다.
3. IsMatch( ) method
정규식 표현과 해당 문자열이 만족하는지를 검사합니다.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string[] strs = { "12345", "LunaStar" };
string alphabetPattern = "[a-z]+";
foreach (string s in strs)
Console.Out.WriteLine("{0} is {2} matched in {1}", s, alphabetPattern,
Regex.IsMatch(s, alphabetPattern) ? "" : "not");
string[] partNumbers = { "1298-673-4192", "A08Z-931-468A",
"_A90-123-129X", "12345-KKA-1230", "0919-2893-1256" };
Regex rgx = new Regex(@"^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$");
foreach (string partNumber in partNumbers)
Console.WriteLine("{0} {1} a valid part number.", partNumber,
rgx.IsMatch(partNumber) ? "is" : "is not");
}
}
12345 is not matched in [a-z]+ LunaStar is matched in [a-z]+ 1298-673-4192 is a valid part number. A08Z-931-468A is a valid part number. _A90-123-129X is not a valid part number. 12345-KKA-1230 is not a valid part number. 0919-2893-1256 is not a valid part number. |
위에서 사용한 방법은 Regex Instance를 따로 생성하지 않고 static 으로 해당 함수를 사용했습니다. 이 경우 인자로 Regex Pattern을 같이 전달하였습니다.
아래에 사용한 방법은 Regex Instance를 생성하면서 Pattern을 생성자로 전달하였습니다.
4. Match( ) method & Match Class
IsMatch( )는 문자열 전체와 패턴이 맞는지를 검사하지만,
Match( )는 문자열 내에 패턴과 맞는 것이 있는지를 검사합니다.
그 결과 Match Instance가 return 되며 그 안에서 패턴과 맞는 문자열 및 원본 문자열 내에서의 위치정보를 알 수 있습니다.
using System; using System.Text.RegularExpressions; class Program { static void Main(string[] args) { string text = "One car , red car , clean Car , my car"; string pattern = @"(\w+)\s+(car)"; Regex R = new Regex(pattern, RegexOptions.IgnoreCase); Match M = R.Match(text); while (M.Success) { Console.Write("MATCH : "); foreach(Group G in M.Groups) { Console.Write(" {0} : ", G); foreach( Capture C in G.Captures) { Console.Write("[{0} , {1}]", C, C.Index); } } Console.WriteLine(""); M = M.NextMatch(); } } }
MATCH : One car : [One car , 0] One : [One , 0] car : [car , 4] MATCH : red car : [red car , 10] red : [red , 10] car : [car , 14] MATCH : clean Car : [clean Car , 20] clean : [clean , 20] Car : [Car , 26] MATCH : my car : [my car , 32] my : [my , 32] car : [car , 35] |
위 결과를 보면 알겠지만, Match 내에 Group이 있습니다. Group의 첫번째는 Match 된 전체 문자열이며, 그 다음부터는 문자열 내에 Group을 나타냅니다.
Capture 에서 원본 문자열 내에서의 인덱스까지 확인이 가능합니다.
5. Replace( )
정규식 패턴을 찾아서 해당 문자열을 바꾸는 기능을 제공합니다.
using System; using System.Text.RegularExpressions; class Program { static void Main(string[] args) { string input = "This is text with far too much whitespace."; string pattern = "\\s+"; string replacement = " "; string result = Regex.Replace(input, pattern, replacement); Console.WriteLine("Original String: {0}", input); Console.WriteLine("Replacement String: {0}", result); } }
Original String: This is text with far too much whitespace. Replacement String: This is text with far too much whitespace. |
위 예제를 보면 whitespace 패턴을 찾아서 space 1칸으로 바꿔줍니다.
댓글 없음:
댓글 쓰기