정규식: 두 판 사이의 차이

K-위키
부정하위식 잘못된 설명수정
편집 요약 없음
 
(같은 사용자의 중간 판 3개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{공대생}} {{지식}}
{{공대생}}
== 설명 ==
== 설명 ==
Regular Expression, regexp, regex
Regular Expression, regexp, regex
6번째 줄: 6번째 줄:


== 문법 ==
== 문법 ==
{{지식}}
{| class="wikitable"
{| class="wikitable"
|-
|-
! 메타문자 !! 동일문자 !! 기능/설명 !! 예시
! 메타문자 !! 동일문자 !! 기능/설명 !! 예시
|-
|-
| \ || || escaping || <code>\.</code>, <code>\?</code>, <code>[\-]</code>
| \ || || escaping || <code>\.</code>, <code>\?</code>, <code>\w</code>, <code>\-</code>, <code>\+</code>
|-
|-
| ? || {0,1} || 0 or 1개 (앞 문자 혹은 하위식이 없거나 1개) || <code>a?</code> = a가 있거나 없음.
| ? || {0,1} || 0 or 1개 (앞 문자/하위식이 없거나 1개) || <code>(ass)?</code> = ass가 있거나 없음.
|-
|-
| * || {0,} || 0개 이상 (앞 문자가 없거나 1개 이상) ||
| * || {0,} || 0개 이상 (앞 문자/하위식이 없거나 1개 이상) ||
|-
|-
| + || {1,} || 1개 이상 (앞 문자가 1개 이상) ||
| + || {1,} || 1개 이상 (앞 문자/하위식이 1개 이상) ||
|-
|-
| {1} || {1,1} || 1개 (앞 문자가 정확히 1개) || <code>{2,4}</code> = 2~4개.
| {1} || {1,1} || 1개 (앞 문자/하위식이 정확히 1개) || <code>{2,5}</code> = 2~5개.
|-
|-
| . || || 임의 문자 (뒤에 갯수 지정이 없을경우 1개) || <code>.*</code> = 임의 문자가 없거나 1개이상. (코드 맨 뒤에 자주 쓰임)
| . || || 임의 문자 (뒤에 갯수 지정이 없을경우 1개) || <code>.*</code> = 임의 문자가 없거나 1개이상. (코드 맨 뒤에 자주 쓰임)
|-
|-
| (a) || || 하위식 ||| <code>(abc|adc)</code> = <code>a(b|d)c</code> = 'abc' or 'adc' (해당 문자와 일치하는 문자)
| (a) || || 하위식 ||| <code>(abc|adc)</code> = <code>a(b|d)c</code> = <code>a[bd]c</code> = abc,adc와 일치하는 단어.
|-
|-
| (?!(a)) || || 부정 하위식 ||| <code>(?!(ass|dick))\w*</code> = not ass+dick (해당 문자들을 제외한 영숫자 문자)
| (?!a) || (?!(a)) || 부정 하위식 ||| <code>(?!(ass|sex))\w*</code> = 첫문자부터 ass+sex가 아닌 영숫자 단어.
|-
|-
| [a] || || 문자 클래스 || <code>[abd]</code> = a+b+d (해당 단일 문자들과 일치하는 문자) (배치순서와 무관)
| [a] || || 문자 클래스 || <code>[abd]</code> = a+b+d만 포함하는 문자,단어. (배치 순서와 무관함)
|-
|-
| [^a] || || 부정 문자클래스 || <code>[^ab./]</code> = not a+b+.+/ (해당 단일 문자들을 제외한 모든문자)
| [^a] || || 부정 문자클래스 || <code>[^a./]</code> = a+.+/제외한 모든 문자를 포함하는 문자,단어.
|-
|-
| [a-c] || [abc] || a+b+c ||
| [a-c] || [abc] || a+b+c ||
|-
|-
| [a-zA-Z0-9_] || \w || 영숫자+_ ||
| [a-zA-Z0-9_] || \w || 영숫자+_ || <code>[\w\-\+=#%()]</code> = 영숫자+_+±+=+#+공백+한글 등 모든 언어,괄호.<ref>% = 공백+한글 등 모든 언어.</ref>
|-
| [a-zA-Z0-9%\-_] || || 영숫자+한글 등 모든 언어+공백+-+_ ||
|}
|}


== 적용 예시 ==
=== 적용 예시 ===
*특정 사이트 적용: <code>@document regexp('https?://\w*\.?\w*wiki.*')</code> = https://wiki.dcinside.com + https://ko.wikibooks.org + https://www.mediawiki.org + https://itwiki.kr + https://namu.wiki + http://rigvedawiki.net + ...
*특정 사이트 적용: <code>@document regexp('https?://\w*\.?\w*wiki.*')</code> = https://wiki.dcinside.com + https://ko.wikibooks.org + https://www.mediawiki.org + https://itwiki.kr + https://namu.wiki + http://rigvedawiki.net + ...


*특정 사이트 제외: <code>@document regexp('https?://(?!(namu|twitter))[A-Za-z0-9%\-_]*\.?(?!(daum|dc[cin]|namu|twitter))[A-Za-z0-9%\-_]*(\.\w{2,3}|\.\w{2}\.\w{2}|\.wiki)/.*')</code> = 트위터+다음+디시인사이드+위키(+디키+남간등)를 제외한 모든 사이트 적용.
*특정 사이트 제외: <code>@document regexp('https?://(?!(namu))[\w\-\+=#%()]*\.?(?!(dc[cin]|namu))[\w\-\+=#%()]*(\.\w{2,3}|\.\w{2}\.\w{2}|\.wiki)/.*')</code> = 디시인사이드+디키+위키+남간을 제외한 모든 사이트 적용.


*이메일 검사: <code>(\w+\.)*\w+@(\w+\.)+[A-Za-z]+</code> = 이메일 검사 코드 열줄 넘게 쓸걸 이거 한줄이면 끝나는데 많이 편하다.
*이메일 검사: <code>(\w+\.)*\w+@(\w+\.)+[a-zA-Z]+</code> = 이메일 검사 코드 열줄 넘게 쓸걸 이거 한줄이면 끝나는데 많이 편하다.


== 같이 보기 ==
== 같이 보기 ==

2022년 2월 23일 (수) 12:53 기준 최신판

주의. 이 문서는 공머생들이 좋아하는 주제 혹은 공머생 그 자체에 대해 다룹니다.
본 문서가 다루는 내용에 지나치게 탐닉할 경우 필연적으로 여성들과 멀어지게 됩니다.
이는 디시위키가 책임지지 않습니다.

Regular Expression, regexp, regex

정규 표현식. 프로그래머들이 애용한다.

이 문서는 유용한 정보가 담긴 문서입니다.
이 문서는 디시위키답지 않게 정말로 유용하거나 자세한 정보를 가득 담고 있습니다. 지식이 늘었다!
메타문자 동일문자 기능/설명 예시
\ escaping \., \?, \w, \-, \+
? {0,1} 0 or 1개 (앞 문자/하위식이 없거나 1개) (ass)? = ass가 있거나 없음.
* {0,} 0개 이상 (앞 문자/하위식이 없거나 1개 이상)
+ {1,} 1개 이상 (앞 문자/하위식이 1개 이상)
{1} {1,1} 1개 (앞 문자/하위식이 정확히 1개) {2,5} = 2~5개.
. 임의 문자 (뒤에 갯수 지정이 없을경우 1개) .* = 임의 문자가 없거나 1개이상. (코드 맨 뒤에 자주 쓰임)
(a) 하위식 (abc|adc) = a(b|d)c = a[bd]c = abc,adc와 일치하는 단어.
(?!a) (?!(a)) 부정 하위식 (?!(ass|sex))\w* = 첫문자부터 ass+sex가 아닌 영숫자 단어.
[a] 문자 클래스 [abd] = a+b+d만 포함하는 문자,단어. (배치 순서와 무관함)
[^a] 부정 문자클래스 [^a./] = a+.+/를 제외한 모든 문자를 포함하는 문자,단어.
[a-c] [abc] a+b+c
[a-zA-Z0-9_] \w 영숫자+_ [\w\-\+=#%()] = 영숫자+_+±+=+#+공백+한글 등 모든 언어,괄호.[1]

적용 예시

[편집 | 원본 편집]
  • 특정 사이트 제외: @document regexp('https?://(?!(namu))[\w\-\+=#%()]*\.?(?!(dc[cin]|namu))[\w\-\+=#%()]*(\.\w{2,3}|\.\w{2}\.\w{2}|\.wiki)/.*') = 디시인사이드+디키+위키+남간을 제외한 모든 사이트 적용.
  • 이메일 검사: (\w+\.)*\w+@(\w+\.)+[a-zA-Z]+ = 이메일 검사 코드 열줄 넘게 쓸걸 이거 한줄이면 끝나는데 많이 편하다.

같이 보기

[편집 | 원본 편집]
  1. % = 공백+한글 등 모든 언어.