C# - 정규식


보통 이기종 서버와 Request/Response 등의 통신을 위해
자체 Protocol 규격을 정의후 MarShalling하여 원하는 데이타 타입으로 변환 하고
최종적으로 하는 일이 문자열 Parsing 작업입니다.
(WCF를 쓰면 좋겠지만.. 그럴 환경이 안되네요..)

문자열 파싱을 하려면.. 정규식 만한게 없는듯하네요..
사내 정의 프로토콜 지원을 위한 정규식들을 잔뜩 만들었는데요..
공개할 수 없는 부분들 다 쳐내고 보니 얼마 안남았습니다.. ^^;

using System;
using System.Text.RegularExpressions;
namespace Inticube.Lib.Util
{
    public static class RegExp
    {
        /// <summary>
        /// IP 정규식 검사
        /// </summary>
        public static bool CheckIpFormat(string pIp)
        {
            Regex regex = new Regex(@"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$");
            return regex.IsMatch(pIp);
        }
        /// <summary>
        /// *를 포함한 IP 정규식 검사
        /// </summary>
        /// <remarks>
        /// e.g) 10.1.10.*<br/>
        /// e.g) 10.*.10.*
        /// </remarks>
        public static bool CheckIpFormatWithStar(string pIp)
        {
            Regex regex = new Regex(@"^((d{1,2}|1dd|2[0-4]d|25[0-5])|*).((d{1,2}|1dd|2[0-4]d|25[0-5])|*).((d{1,2}|1dd|2[0-4]d|25[0-5])|*).((d{1,2}|1dd|2[0-4]d|25[0-5])|*)$");
            return regex.IsMatch(pIp);
        }
        /// <summary>
        /// 구분자를 기준으로 split 실행한다.
        /// </summary>
        /// <param name="orgStr">문자열</param>
        /// <param name="pDelimit">구분자</param>
        /// <returns>space가 제외된 문자열 배열</returns>
        public static string[] SplitWithString(string orgStr, string pDelimit)
        {
            return (new Regex(pDelimit)).Split(orgStr.Trim());
        }
        /// <summary>
        /// space를 구분으로 split 실행한다.
        /// </summary>
        /// <param name="orgStr">문자열</param>
        /// <returns>space가 제외된 문자열 배열</returns>
        public static string[] SplitWithSpace(string pResult)
        {
            return (new Regex(" +")).Split(pResult.Trim());
        }
        /// <summary>
        /// n 기호를 구분으로 split 실행한다.
        /// </summary>
        /// <param name="orgStr">문자열</param>
        /// <returns>n가 제외된 문자열 배열</returns>
        public static string[] SplitWithNewLine(string pResult)
        {
            //return (new Regex("(n|n)")).Split(pResult.Trim());
            return (new Regex("n|n")).Split(pResult.Trim());
        }
    }
}

 

 

광고

댓글 남기기