정규식: 두 판 사이의 차이
K-위키
편집 요약 없음 |
편집 요약 없음 |
||
| 13번째 줄: | 13번째 줄: | ||
| ? || {0,1} || 0 or 1개 || 앞 문자가 없거나 1개. || 예: <code>a?</code> = a가 있거나 없음. | | ? || {0,1} || 0 or 1개 || 앞 문자가 없거나 1개. || 예: <code>a?</code> = a가 있거나 없음. | ||
|- | |- | ||
| * || {0,} || | | * || {0,} || 0개 이상 || 앞 문자가 없거나 1개 이상. || | ||
|- | |- | ||
| + || {1,} || | | + || {1,} || 1개 이상 || 앞 문자가 1개 이상. || | ||
|- | |- | ||
| {1} || {1,1} || 1개 || 앞 문자가 정확히 1개. || | | {1} || {1,1} || 1개 || 앞 문자가 정확히 1개. || 예: <code>{2,4}</code> = 2~4개. | ||
|- | |- | ||
| . || || 임의 문자 || 임의의 1개 문자. || | | . || || 임의 문자 || 임의의 1개 문자. || | ||
| 39번째 줄: | 39번째 줄: | ||
*특정 사이트 적용: <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}|\.co\.\w{2}|\\.wiki) | *특정 사이트 제외: <code>@document regexp('https?://(?!(namu|twitter))[A-Za-z0-9%\-_]*\.?(?!(daum|dc[cin]|namu|twitter))[A-Za-z0-9%\-_]+(.\w{2,3}/|\.co\.\w{2}/|\\.wiki/).*')</code> = 트위터+다음+디시인사이드+위키(+디키+남간등)를 제외한 모든 사이트 적용. | ||
*이메일 검사: <code>(\w+\.)*\w+@(\w+\.)+[A-Za-z]+</code> = 이메일 검사 코드 열줄 넘게 쓸걸 이거 한줄이면 끝나는데 많이 편하다. | *이메일 검사: <code>(\w+\.)*\w+@(\w+\.)+[A-Za-z]+</code> = 이메일 검사 코드 열줄 넘게 쓸걸 이거 한줄이면 끝나는데 많이 편하다. | ||
2021년 11월 23일 (화) 21:12 판
설명
Regular Expression, regexp, regex
정규 표현식. 프로그래머들이 애용한다.
문법
| 메타문자 | 동일문자 | 기능 | 설명 | 추가설명 |
|---|---|---|---|---|
| \ | escaping | \., \?, [\-] |
||
| ? | {0,1} | 0 or 1개 | 앞 문자가 없거나 1개. | 예: a? = a가 있거나 없음.
|
| * | {0,} | 0개 이상 | 앞 문자가 없거나 1개 이상. | |
| + | {1,} | 1개 이상 | 앞 문자가 1개 이상. | |
| {1} | {1,1} | 1개 | 앞 문자가 정확히 1개. | 예: {2,4} = 2~4개.
|
| . | 임의 문자 | 임의의 1개 문자. | ||
| (a) | 하위식 | 예: (abc|adc) = a(b|d)c = 'abc' or 'adc'인 문자. |
||
| (?!(a)) | 부정 하위식 | 예: (?!(a|bc|d\.e))\w* = not a+bc+d.e |
해당 문자/단어들을 제외한 영숫자 문자. | |
| [a] | 문자 클래스 | 예: [abd] = a+b+d (해당문자들중 하나와 같은 문자) |
배치순서와 무관함. | |
| [^a] | 부정 문자클래스 | 예: [^ab./] = not a+b+.+/ (해당문자들을 제외한 모든문자) |
특정문자 제외한 모든문자가 포함되므로 .과 /도 제외시키는것이 좋다.
| |
| [a-d] | [abcd] | a+b+c+d | ||
| [A-Za-z0-9_] | \w | 영숫자+_ | ||
| [A-Za-z0-9%\-_] | 영숫자+한글 등 모든 언어+-+_ |
적용 예시
- 특정 사이트 적용:
@document regexp('https?://\w*\.?\w*wiki.*')= https://wiki.dcinside.com + https://ko.wikibooks.org + https://www.mediawiki.org + https://itwiki.kr + https://namu.wiki + http://rigvedawiki.net + ...
- 특정 사이트 제외:
@document regexp('https?://(?!(namu|twitter))[A-Za-z0-9%\-_]*\.?(?!(daum|dc[cin]|namu|twitter))[A-Za-z0-9%\-_]+(.\w{2,3}/|\.co\.\w{2}/|\\.wiki/).*')= 트위터+다음+디시인사이드+위키(+디키+남간등)를 제외한 모든 사이트 적용.
- 이메일 검사:
(\w+\.)*\w+@(\w+\.)+[A-Za-z]+= 이메일 검사 코드 열줄 넘게 쓸걸 이거 한줄이면 끝나는데 많이 편하다.