윈도우 프로그래밍

C# 4.0 정규식 모음

xaida 2021. 3. 15. 10:38

----------------------------------------------------------------------

-- 각종 주석 찾기

-- HTML / XML 주석

\<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\>

 

 

-- Source Code 주석

-- 멀티라인 주석 /* .... */

/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/

 

-- 멀티라인 + 싱글라인 /* .... */ + // ...

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*)

 

-- Oracle Comment

/\*(?>(?:(?!\*/|/\*).)*)(?>(?:/\*(?>(?:(?!\*/|/\*).)*)\*/(?>(?:(?!\*/|/\*).)*))*).*?\*/|--.*?\r?[\n]

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(--.*)

 

-- Oracle Query 에서 Table Name 추출

(from|join)\s+(?<table>\S+)

 

-- SQL 바인딩 변수 찾기

(?<=[\:])\w+(?=\s+)  # ':ANY_PARAMETER' 같은 바인딩 변수에서 이름만 리턴

(?<!\w)@\w+|(?<!\w):\w+|\?

 

-- 한글 찾기

\b[가-힣]+\b

[\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF]+

[\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF]+?

 

-- 한자 찾기

[\u4E00-\u9FA5]|[\uF900-\uFA2D]+

\b[一-龥]+\b

\b([\u4E00-\u9FFF]+)\b

[\u31C0-\u31EF\u3200-\u32FF\u3400-\u4DBF\u4E00-\u9FBF\uF900-\uFAFF\u20000-\u2A6DF\u2F800-\u2FA1F]+

 

-- 일어 찾기 : 히라가나, 가타카나, 가타카나 음성 확장

[\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF]+

 

-- SQL 변수 찾기

(?i:declare|,)\s+?(?:(?<var>@[\w@$#]+)\s+(?<type>[\w()]+))+

\b(\@\w+)|(\:\w+)\b

\@\w+

@[\w\d_@$]+

@[^\s=;\n]+(?=[\s=;\n])

\\b:[\\w]*

 

-- 주석

\@\w+     # #으로 시작하고 줄바꿈을 만날때까지 \n

\@\w+     (?#  이렇게 주석을 처리할 수도 있다...)

 

 

 

----------------------------------------------------------------------

-- 중첩 괄호/브라켓 관련 처리

-- 중첩 구조 매칭

-- 중첩된 괄호에 매칭하기

\((?>[^()]+|\((?<DEPTH>)|\)(?<-DEPTH>))*(?(DEPTH)(?!))\)

 

 

-- string Format용 PalceHolder 찾기(숫자와 문자 허용)

\{\w+\}

\{\w+\}|(?<!\{)\{([0-9]+).*?\}(?!})

 

-- 더블쿼터로 묶인 구문 찾기

\"([^\"]*)\"

 

-- 대괄호 구문 찾기

 

-- 중괄호 '( )' 내부 문자 찾기

(?<=\{).*(?=\})

 

-- 대괄호'[ ]' 내부가 특정문자 시작되는 부분 찾기

(?<=\[)DSDC.*(?=\]) # 대괄호 내부가 DSDC로 시작하는 문자열에서 대괄호는 제외

(?<=\[DSDC).*(?=\]) # 대괄호 내부가 DSDC로 시작하는 문자열에서 대괄호와 DSDC 문자열은 제외

 

-- 메소드(함수) 호출부분 찾기

(AnyMethod|SomeMethod)\([^()]*\)

\w+\([^()]*\)

 

 

-- 이름=값 쌍 찾기

(?m)^\s*(?'name'\w+)\s*=\s*(?'value'.*)\s*(?=\r?$)

(\S+?)\s*=\s*(\S+)

 

-- 이름=값 또는 이름:값 쌍 찾기

(?m)^\s*(?'name'\w+)\s*[=:]\s*(?'value'.*)\s*(?=\r?$)

 

 

-- jack 과 james 를 순서에 포함하는 문자열 찾기

(?=.*\bjack\b)(?=.*\bjames\b).*

 

-- 'SER=' 과 '[DSDC' 를 포함하는 문자열 찾기

(?=.*\SER\=\b)(?=.*\[DSDC\b).*



출처: https://ageoffstone.tistory.com/entry/C-40-정규표현식-모음 [내일도난]