반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 웹 크롤링
- MSSQL 문자열
- tomcat
- 리버스 프록시 예제
- 디자인 패턴 사례
- Visual Studio 강제 삭제
- vue.js
- Selenium 환경
- .NET Core Proxy
- vue
- Tomcat Error
- javascript
- spring
- .NET Core
- MSSQL 동적 쿼리
- Vue.config
- Nginx Reverse Proxy
- 웹 자동화
- Vue3 configureWebpack
- 프록시 예제
- SQLP
- Visual Studio 2015 설치
- Vue configureWebpack
- Visual Studio 2015 강제 삭제
- Selenium 설치
- Visual Studio 재설치
- vue3
- Visual Studio 2015 삭제
- 업무 자동화
- Visual Studio 패키지에 실패했습니다.
Archives
- Today
- Total
금백조의 개발 블로그
[C#]정규표현식 사용하기 본문
반응형
서론
엑셀의 셀에서 개행된 문자를 복사하여 프로그램의 그리드에 붙여 넣기 하면 문자 맨 앞에는 "(큰따옴표)가 문자 맨 뒤에는 "(큰따옴표) + \r\n(개행 문자)가 붙는 현상을 해결해야 했습니다. 그래서 정규표현식을 떠올렸고 이를 통해 해결했습니다. 따라서 이번 글에서는 문제 해결 과정 속에서 알게 된 C#에서 정규표현식 사용 방법에 대해 알아보겠습니다.
본론
구문 형식
[namespace]
using System.Text.RegularExpressions;
[정규표현식 선언]
string strConstantParttern = "^\"|\"$|\"\r\n$";//string 으로 선언
Regex strVariableParttern = new Regex("^\"|\"$|\"\r\n$");//Regex 생성자로 선언
[Regex 주요 속성]
Matches | 정규표현식에 일치하는 input 문자들을 GroupCollection에 담아 리턴합니다. (Groups[1]에 일치 문자열이 담깁니다.) |
IsMatch | 정규표현식에 일치하는 input 문자를 찾을 경우 true, 못 찾을 경우 false를 반환합니다. |
input | 정규표현식에 일치하는 input 문자들을 특정 문자로 변환하여 string 객체를 리턴합니다. input 객체 자체가 변경되는게 아니므로 string 변수를 선언하여 객체를 반환받아야 합니다. |
[예제]
using System;
using System.Text.RegularExpressions;
namespace RegularExpressionExample
{
class Program
{
static void Main(string[] args)
{
RegPartternExample1();
RegPartternExample2();
RegPartternExample3();
}
static void RegPartternExample1()
{
Console.WriteLine("예제1");
//앞뒤 쌍따옴표, 마지막 개행 제거하는 정규표현식
string pattern = "^\"|\"$|\"\r\n$";
string input = "\"개행된\r\n문자\r\n입니다.\"\r\n";
Console.WriteLine("변경전");
Console.WriteLine(input);
Console.WriteLine();
Console.WriteLine("일치 여부 확인");
Console.WriteLine(Regex.IsMatch(input, pattern));
Console.WriteLine();
input = Regex.Replace(input, pattern, string.Empty);
Console.WriteLine("변경후");
Console.WriteLine(input);
Console.WriteLine();
}
static void RegPartternExample2()
{
Console.WriteLine("예제2");
string str = "나열된 단어1 단어2 단어3 단어4 입니다.";
//단어별로 구분하는 정규표현식
Regex regex = new Regex(@"\b(\w+?)\b", RegexOptions.IgnoreCase);
foreach (Match m in regex.Matches(str))
{
Group g = m.Groups[1];
Console.WriteLine("{0}:{1}", g.Index, g.Value);//시작 인덱스, 값 출력
}
}
static void RegPartternExample3()
{
Console.WriteLine("예제3");
string[] strArray = new string[5] { "file file1.txt", "file.file2.jpg",
"file3.png", "file4.dll", "file5.jpeg" };
//파일명 확장자가 이미지인지 체크하는 정규표현식
Regex regex = new Regex(@"\.(jpeg|gif|png|jpg)$", RegexOptions.IgnoreCase);
foreach (string str in strArray)
{
Console.WriteLine("파일이름:{0}, 이미지여부:{1}", str, regex.IsMatch(str));
}
}
}
}
[실행 결과]
결론
정규표현식을 잘 사용하면 복잡하게 코드로 구현해야 하는 것을 정규식 1줄로 간단히 표현할 수 있어서 매우 좋은 것 같습니다. 앞으로도 필요할 때마다 정규식을 적극적으로 활용해야겠습니다.
Reference
[.NET 정규식]
https://docs.microsoft.com/ko-kr/dotnet/standard/base-types/regular-expressions
반응형