44
Regular Expressions : Regular Expressions : JavaScript, VBScript &T- JavaScript, VBScript &T- SQL SQL

Regular Expressions : JavaScript, VBScript &T-SQL

  • Upload
    zeheb

  • View
    84

  • Download
    0

Embed Size (px)

DESCRIPTION

Regular Expressions : JavaScript, VBScript &T-SQL. 차례. Mastering Regular Expressions JavaScript RegExp VBScript RegExp T-SQL RegExp. Mastering Regular Expressions. 정규표현식이란 ?. 텍스트의 패턴을 매치하기위해 사용되는 문장과 기호의 집합 2가지 규칙 가장 먼저 시작하는 매치가 우선된다 표준 수량자( quantifier) 는 탐욕스럽다 단순한 예 a cat - PowerPoint PPT Presentation

Citation preview

Page 1: Regular Expressions : JavaScript, VBScript &T-SQL

Regular Expressions : Regular Expressions : JavaScript, VBScript &T-SQLJavaScript, VBScript &T-SQL Regular Expressions : Regular Expressions : JavaScript, VBScript &T-SQLJavaScript, VBScript &T-SQL

Page 2: Regular Expressions : JavaScript, VBScript &T-SQL

2

차례차례

Mastering Regular ExpressionsMastering Regular Expressions

JavaScript RegExpJavaScript RegExp

VBScript RegExpVBScript RegExp

T-SQL RegExpT-SQL RegExp

Page 3: Regular Expressions : JavaScript, VBScript &T-SQL

3

Mastering Regular ExpressionsMastering Regular ExpressionsMastering Regular ExpressionsMastering Regular Expressions

Page 4: Regular Expressions : JavaScript, VBScript &T-SQL

4

정규표현식이란정규표현식이란 ??

텍스트의 패턴을 매치하기위해 사용되는 텍스트의 패턴을 매치하기위해 사용되는 문장과 기호의 집합문장과 기호의 집합22 가지 규칙가지 규칙

가장 먼저 시작하는 매치가 우선된다가장 먼저 시작하는 매치가 우선된다표준 수량자표준 수량자 ((quantifier)quantifier) 는 탐욕스럽다는 탐욕스럽다

단순한 예단순한 예aa

catcat순서대로 세개의 문자순서대로 세개의 문자cat, category, Cattycat, category, Catty

Page 5: Regular Expressions : JavaScript, VBScript &T-SQL

5

문자표현법문자표현법

문자약어 문자약어 \a - \a - 경고경고 , \b – , \b – 백스페이스백스페이스 , \n - , \n - 줄바꿈문자줄바꿈문자 , ,

\r - \r - 캐리지리턴 캐리지리턴 , \t – , \t – 일반탭일반탭 , \v – , \v – 수직탭수직탭

88 진수 이스케이프진수 이스케이프 \015\012 - CR/LF\015\012 - CR/LF

1616 진수 및 유니코드 이스케이프진수 및 유니코드 이스케이프\x0D\x0A – CR/LF\x0D\x0A – CR/LF

제어문자제어문자\cH – Control-H\cH – Control-H

Page 6: Regular Expressions : JavaScript, VBScript &T-SQL

6

문자클래스문자클래스 -1-1

일반클래스일반클래스[...] – [...] – 클래스내의 임의의문자클래스내의 임의의문자[^...] – [^...] – 부정형부정형 , , 열거되지 않은 문자에 매치열거되지 않은 문자에 매치 , , 클래스내에선 행시작이 아님클래스내에선 행시작이 아님

[Aa] – A or a[Aa] – A or a

gr[ae]y – grey or graygr[ae]y – grey or gray

[Cc]at – Cat or cat[Cc]at – Cat or cat

[^0-9] – [^0-9] – 숫자가 아님숫자가 아님q[^u] – q q[^u] – q 다음에 다음에 u u 가 아닌 어떤것에 매치가 아닌 어떤것에 매치

Iraq, IraqiIraq, Iraqi

Page 7: Regular Expressions : JavaScript, VBScript &T-SQL

7

문자클래스문자클래스 -2-2

문자범위문자범위[a-z] –a,b,c…,z[a-z] –a,b,c…,z

[A-Z], [0-9], [a-zA-Z0-9], [-a-z][A-Z], [0-9], [a-zA-Z0-9], [-a-z]

클래스약어클래스약어\w = [a-zA-Z0-9_], \W = [^\w]\w = [a-zA-Z0-9_], \W = [^\w]

\d = [0-9], \D = [^\d]\d = [0-9], \D = [^\d]

\s = [ \f\n\r\t\v], \S = [^\s]\s = [ \f\n\r\t\v], \S = [^\s]\W\w\w\w\w\w\W\W\w\w\w\w\w\W

\s\D\S\W\s\s\D\S\W\s

Page 8: Regular Expressions : JavaScript, VBScript &T-SQL

8

문자클래스문자클래스 -3-3

Dot (.) – Dot (.) – 임의의 문자임의의 문자일반적으로 영숫자일반적으로 영숫자 , , 공백공백 , , 탭탭 , , 특수문자특수문자newlinenewline 제외 제외 (( 옵션옵션 , , 엔진에 따라엔진에 따라 , , 윈윈 :\:\r\n, r\n, 유유 :\:\n)n)

클래스내에 클래스내에 . . 을 사용하면을 사용하면 [.] [.] 매타문자 아님매타문자 아님07.31.1973 07.31.1973

07.31.197307.31.1973

87899076311973788789907631197378

07[-./]31[-./]197307[-./]31[-./]1973

Page 9: Regular Expressions : JavaScript, VBScript &T-SQL

9

앵커및 위치표기용 메타문자앵커및 위치표기용 메타문자

행및 문자열시작 행및 문자열시작 : ^, \A – : ^, \A – 단어끝 과 단어끝 과 \\n n 사이사이행및 문자열의 끝 행및 문자열의 끝 : $, \Z, \z: $, \Z, \z

^,\^,\A A 와 와 $,\$,\ZZ 는 일반적으로 동일는 일반적으로 동일//m m 인경우엔 인경우엔 \\A, \ZA, \Z 는 문장시작는 문장시작 , , 끝끝폼 입력값검사시엔 대부분 폼 입력값검사시엔 대부분 ^…$ ^…$

매치시작위치매치시작위치 (( 이전매치끝위치이전매치끝위치 ) : \G) : \G

단어경계 단어경계 : \b, \B = [^\b], \<, \>: \b, \B = [^\b], \<, \>^cat$ - ^cat$ - 행시작 행시작 cat cat 행끝행끝^$ - ^$ - 빈행빈행

Page 10: Regular Expressions : JavaScript, VBScript &T-SQL

10

주석및 모드변경자주석및 모드변경자

다중행모드다중행모드 ((multi-line) : mmulti-line) : m^, $ ^, $ 이 이 newline newline 의 앞뒤에 매치의 앞뒤에 매치

단일행모드단일행모드 ((single-line) : ssingle-line) : sDot (.) Dot (.) 에 에 newline newline 을 포함을 포함

대소문자무시모드 대소문자무시모드 : i: i

공백무시모드 공백무시모드 : x: x

모드변경자 모드변경자 (?mod:…)(?mod:…)(?i)te(?-i)st – TEst , Test(o), teST, TEST(x)(?i)te(?-i)st – TEst , Test(o), teST, TEST(x)

주석 주석 (?#...) (?#...)

Page 11: Regular Expressions : JavaScript, VBScript &T-SQL

11

선택선택

선택 선택 : …|…: …|…둘중에 하나를 선택둘중에 하나를 선택Cat|cat = Cat or catCat|cat = Cat or cat = = (C|c)at(C|c)atJeffreyJeffrey

/Jeffrey|Jeffery//Jeffrey|Jeffery//Jeff(rey|ery)//Jeff(rey|ery)//Jeff(re|er)y//Jeff(re|er)y/

get|getvalue|set|setvalueget|getvalue|set|setvalue““setvalue” setvalue” 에 “에 “ set” set” 만 매치만 매치

위치바꿈위치바꿈\\bget(value)?|set(value)?\bbget(value)?|set(value)?\b\\b(get|set)(value)?\bb(get|set)(value)?\b

Page 12: Regular Expressions : JavaScript, VBScript &T-SQL

12

수량자수량자 -1-1

표준수량자 표준수량자 : : 탐욕스럽다 탐욕스럽다 (greedy)(greedy)* * : 0...N: 0...N? : 0,1 ? : 0,1 + : 1…N + : 1…N {n, n}, {n, }, {n}{n, n}, {n, }, {n}

[A-Za-z]*[A-Za-z]*colou?r - color or colourcolou?r - color or colour<a>.*</a><a>.*</a><a[^>]*> - <a[^>]*> - 속성포함 또는 포함않한 속성포함 또는 포함않한 <a> <a> 태그태그<a +href=“[^”]+” *> - href<a +href=“[^”]+” *> - href 속성만 갖는 속성만 갖는 <a> <a> 태그태그<a *(href=“[^”]+”)? *> <a *(href=“[^”]+”)? *>

Page 13: Regular Expressions : JavaScript, VBScript &T-SQL

13

수량자수량자 -2-2

느슨한 수량자느슨한 수량자 (lazy)(lazy)**?, ??, +?, {n, n}? – ?, ??, +?, {n, n}? – 가능하면 작은 문자열로 가능하면 작은 문자열로 매치매치

<a>.*?</a><a>.*?</a>

소유수량자소유수량자**+, ?+, ++, {n, n}+ - +, ?+, ++, {n, n}+ - 백트래킹을 하지 않음백트래킹을 하지 않음

Page 14: Regular Expressions : JavaScript, VBScript &T-SQL

14

백레퍼런스백레퍼런스

정규식내의 부분의 매치를 저장하고 정규식내의 부분의 매치를 저장하고 변수에 저장하기 위해 둥근괄호 변수에 저장하기 위해 둥근괄호 () () 사용사용\1,\2,\3, … , \9 \1,\2,\3, … , \9

(\s[a-zA-Z]*)\1(\s[a-zA-Z]*)\1

((^.{0,5})([0-9]+)\s*$) ((^.{0,5})([0-9]+)\s*$) 순서순서1 - ((^.{0,5})([0-9]+)\s*$)1 - ((^.{0,5})([0-9]+)\s*$)

2 - (^.{0,5})2 - (^.{0,5})

3 - ([0-9]+)3 - ([0-9]+)<([A-Z][A-Z0-9]*)[^>]*>.*?</\1><([A-Z][A-Z0-9]*)[^>]*>.*?</\1>

([A-C])x\1x\1 => AxAxAx, BxBxBx, AxBxCx([A-C])x\1x\1 => AxAxAx, BxBxBx, AxBxCx

([([abc]+) abc]+) ▶ ▶ \1, ([abc])+ \1, ([abc])+ \1▶ \1▶

\b(\W+)\s+\1\b => \b(\W+)\s+\1\b => 중복단어 수정중복단어 수정

Page 15: Regular Expressions : JavaScript, VBScript &T-SQL

15

그룹지정그룹지정 , , 캡처캡처

캡처캡처 // 그룹지정용괄호 그룹지정용괄호 : (…), $1,$2: (…), $1,$2<a[^>]*>(.*)</a> - <a[^>]*>(.*)</a> - 괄호의 내용이 괄호의 내용이 $1$1 에 캡처에 캡처

그룹지정전용괄호 그룹지정전용괄호 : (?:…): (?:…)캡처않함캡처않함 , , 백레퍼런스 사용안함 백레퍼런스 사용안함 => => 속도 속도 빠름빠름

이름이있는캡처 이름이있는캡처 : (?<name>…): (?<name>…)매치되는 내용을 이름으로 캡처매치되는 내용을 이름으로 캡처

원자그룹지정 원자그룹지정 : (?>…) – : (?>…) – 백트래킹 않음백트래킹 않음괄호를 하나의 토큰으로 취급괄호를 하나의 토큰으로 취급((x++) = (?>x)x++) = (?>x)

““1234567898” \1234567898” \d+6 (o) , \d++ (x)d+6 (o) , \d++ (x)

Page 16: Regular Expressions : JavaScript, VBScript &T-SQL

16

룩어라운드룩어라운드

실제로 문자열에 매치되는 것은 아님실제로 문자열에 매치되는 것은 아님룩어헤드 룩어헤드 ::

다음에 올 문자열을 포함해 매치여부 판단다음에 올 문자열을 포함해 매치여부 판단긍정형 긍정형 : (?=…) – : (?=…) – 다음에 문자열이 있는지다음에 문자열이 있는지부정형 부정형 : (?!...) – : (?!...) – 다음에 문자열이 없는지다음에 문자열이 없는지

룩비하인드룩비하인드긍정형 긍정형 : (?<=…) – : (?<=…) – 전에 문자열이 있는지전에 문자열이 있는지부정형 부정형 : (?<!...) – : (?<!...) – 전에 문자열이 없는지전에 문자열이 없는지

Page 17: Regular Expressions : JavaScript, VBScript &T-SQL

17

룩어라운드룩어라운드 -- 예제예제Jeffs -> Jeff’ss/\bJeffs\b/\bJeff’s\b/g=> s/\b(Jeff)(s)\b/$1’$2/g =>s/\bJeff(?=s\b)/\bJeff’/g => s/(?<=\bJeff)(?=s\b)/’/g – 문자열에 매치되는 것이 아니라 “ 위치” 매치됨s/(?=s\b)(?<=\bJeff)/’/g

숫자에 천단위 쉼표s/(?<=d)(?=(\d\d\d)+(?!\d))/,/g-> 1234Hz , 1980s , …

중복문자제거s/(\w)+\s\1/$1/g – “the the the” s/(\w)+\s(?=\1)//g

quit q(?=u) q(?=u)i – 항상 X

Page 18: Regular Expressions : JavaScript, VBScript &T-SQL

18

JavaScript RegExpJavaScript RegExpJavaScript RegExpJavaScript RegExp

Page 19: Regular Expressions : JavaScript, VBScript &T-SQL

19

정규식 선언정규식 선언

정규식생성자를 이용정규식생성자를 이용var rev = new RegExp(“s”,“gim”);var rev = new RegExp(“s”,“gim”);

g – g – 전체문장내모든매치전체문장내모든매치 , i – , i – 대소문자구분없음대소문자구분없음 , m , m – – 다중행 허용다중행 허용

정규식문자를 사용한 일반적 선언정규식문자를 사용한 일반적 선언var searchTermRE = /X1X4/gim;var searchTermRE = /X1X4/gim;

Page 20: Regular Expressions : JavaScript, VBScript &T-SQL

20

특수문자특수문자

\t, \n, \0(Null \t, \n, \0(Null 문자문자 ))

., ^, $., ^, $

A-Z, a-z, 0-9A-Z, a-z, 0-9

*, +, ?, *, +, ?,

\*, \+, \?, \$, \^ - \*, \+, \?, \$, \^ - 매타문자를 문자로매타문자를 문자로

Page 21: Regular Expressions : JavaScript, VBScript &T-SQL

21

예제예제

: lop, mop, bop, sop, pop, gop, top, fopvar re = /.op/;var re = /[blp]op/;var re = /[a-m]op/;var re = /[^blp]op/;var re = /[^a-m]op/;

: bonk,onk,bbonk,bbbonkvar re = /b?onk/;var re = /b*onk/;var re = /b+onk/;var re = /b{2}onk/;var re = /b{1,3}onk/;

Page 22: Regular Expressions : JavaScript, VBScript &T-SQL

22

ReExp.test(str)ReExp.test(str)

테스트될 문자열에 대해서 패턴에 테스트될 문자열에 대해서 패턴에 매치여부를 매치여부를 Boolean Boolean 으로 반환으로 반환

var re = new RegExp(“t$”);function Validate(en) {

return re.test(en);}function ShowPrompt() {

var en = prompt(“Type your text here.”);if (Validate(en) {

alert(“There is a match!”);}else {

alert(“There is no matchi!”);}

}

Page 23: Regular Expressions : JavaScript, VBScript &T-SQL

23

ReExp.exec(str)ReExp.exec(str)

매칭되는 문자를 모두 배열로 반환매칭되는 문자를 모두 배열로 반환function RegExpTest(){

var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())

if (ver >= 5.5){ var src = "The rain in Spain falls mainly in the plain.";var re = /\w+/g; var arr;while ((arr = re.exec(src)) != null)

document.write(arr.index + "-" + arr.lastIndex + "\t" + arr);

}else{

alert("You need a newer version of JScript for this to work");}

}

Page 24: Regular Expressions : JavaScript, VBScript &T-SQL

24

String.search() MethodString.search() Method

매칭되는 문자의 첫위치를 반환매칭되는 문자의 첫위치를 반환매칭되는 문자가 없을 경우 매칭되는 문자가 없을 경우 -1 -1 을 반환을 반환/g /g 모드를 무시모드를 무시

function SearchDemo(){var r, re; var s = "The rain in Spain falls mainly in the plain.";re = /falls/i; r = s.search(re); return(r);

}

Page 25: Regular Expressions : JavaScript, VBScript &T-SQL

25

String.match() MethodString.match() Method

매칭되는 문자를 모두 배열로 반환매칭되는 문자를 모두 배열로 반환/g /g 모드에서도 실행모드에서도 실행

function checkPhoneNumber(phoneNo) { var re = /^\(\d\d\d\) \d\d\d-\d\d\d\d$/; if (phoneNo.match(re)) {

return true; } else {

return false; }

}

Page 26: Regular Expressions : JavaScript, VBScript &T-SQL

26

String.replace() MethodString.replace() Method

매치되는 문자를 지정된 문자로 변환매치되는 문자를 지정된 문자로 변환/g /g 모드에서도 실행모드에서도 실행

function autoCorrect(theString) { theString = theString.replace(/([abd-z])ei/gi,”$1ie”); return theString;

}

function ReplaceDemo(){var r, re; var ss = "The rain in Spain falls mainly in the plain.";re = /(\S+)(\s+)(\S+)/g; r = ss.replace(re, "$3$2$1"); return(r);

}

Page 27: Regular Expressions : JavaScript, VBScript &T-SQL

27

그룹그룹 , , 캡처캡처

정규식내에서 괄호를 정규식내에서 괄호를 \1, \2,...,\9 \1, \2,...,\9 로 로 대치하여 반복하여 사용할 수 있음대치하여 반복하여 사용할 수 있음정규식 괄호내의 패턴에 매치되는 문자를 정규식 괄호내의 패턴에 매치되는 문자를 $1, $2,.., $9 $1, $2,.., $9 로 받을수 있음로 받을수 있음

// somename.html.html -> somename.html

matchStr = /(\b\w+)\.(\w+)\.\2\b/g;FilesString.replace(matchStr, $1+'.'+$2);

Page 28: Regular Expressions : JavaScript, VBScript &T-SQL

28

VBScript RegExpVBScript RegExpVBScript RegExpVBScript RegExp

Page 29: Regular Expressions : JavaScript, VBScript &T-SQL

29

선언선언

생성생성Set re = new RegExpSet re = new RegExp

속성속성Pattern : Pattern : 정규식구문정규식구문IgnoreCase : IgnoreCase : 대소문자구분여부대소문자구분여부Global : Global : 전체문장의 모든매치전체문장의 모든매치

Set re = new RegExpre.Pattern = “[A-Z]\d”re.IgnoreCase = Truere.Global = False

Page 30: Regular Expressions : JavaScript, VBScript &T-SQL

30

매타문자매타문자

[…],[^…][…],[^…]

\t,\t,

\b,\B, \d,\D, \s,\S, \w,\W\b,\B, \d,\D, \s,\S, \w,\W

^,$^,$

*,+,?,{n, m}*,+,?,{n, m}

(…), (?:…), (?=…), (?!...)(…), (?:…), (?=…), (?!...)

……|…|…

Page 31: Regular Expressions : JavaScript, VBScript &T-SQL

31

RegExp.Test(string)RegExp.Test(string)

테스트될 문자열의 패턴 매치여부를 테스트될 문자열의 패턴 매치여부를 Boolean Boolean 으로 반환으로 반환

MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

Function RegExpTest(patrn, strng)Dim regEx, retVal Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = False retVal = regEx.Test(strng) If retVal Then

RegExpTest = "One or more matches were found."Else

RegExpTest = "No match was found."End If

End Function

Page 32: Regular Expressions : JavaScript, VBScript &T-SQL

32

RegExp.Replace(string)RegExp.Replace(string)

패턴에 매치되는 문자를 다른문자로 바꿈패턴에 매치되는 문자를 다른문자로 바꿈캡처할수 있음캡처할수 있음

MsgBox(RegExpReplace(“John Smith"))

Function RegExpReplace(strng)Dim regEx, retVal Set regEx = New RegExp regEx.Pattern = “(\S+)(\s+)(\S+)” retVal = regEx.Replace(strng, “$3, $2$1”)

End Function

Page 33: Regular Expressions : JavaScript, VBScript &T-SQL

33

RegExp.Execute(string)RegExp.Execute(string)

Matches Matches 컬렉션을 반환컬렉션을 반환

Function RegExpTest(patrn, strng)Dim regEx, Match, Matches Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = True regEx.Global = True Set Matches = regEx.Execute(strng) For Each Match in Matches

RetStr = RetStr & "Match found at position "RetStr = RetStr & Match.FirstIndex & ". Match Value is RetStr = RetStr & Match.Value & "

NextRegExpTest = RetStr

End FunctionMsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

Page 34: Regular Expressions : JavaScript, VBScript &T-SQL

34

T-SQL RegEx T-SQL RegEx T-SQL RegEx T-SQL RegEx

Page 35: Regular Expressions : JavaScript, VBScript &T-SQL

35

지원지원

Like ‘A%’, like ‘a_’Like ‘A%’, like ‘a_’A.*, aA.*, a..

Like ‘[a-z]%’, like ‘[^abc]%’Like ‘[a-z]%’, like ‘[^abc]%’[a-z].* , [^abc].*[a-z].* , [^abc].*

PATINDEX(‘%ABC%’, ColNm)PATINDEX(‘%ABC%’, ColNm)패턴이 시작되는 처음 위치패턴이 시작되는 처음 위치 , , 없으면 없으면 0 0 을 을 반환반환

Page 36: Regular Expressions : JavaScript, VBScript &T-SQL

36

RegExp Object – RegExp Object – 생성생성Create Function dbo.regexObj(

@regexp varchar(1000),@global bit = 0,@ignoreCase bit = 0

)Returns Integer AsBegin

Declare @hr integerDeclare @objRegExp integerExecute @hr = xp_OACreate 'VBScript.RegExp', @objRegExp OUTPUTIf @hr <> 0 Begin

Return NULLEndExecute @hr = xp_OASetProperty @objRegExp, 'Pattern', @regexpIf @hr <> 0 Begin

Return NULLEndExecute @hr = xp_OASetProperty @objRegExp, 'Global', @globalIf @hr <> 0 Begin

Return NULLEndExecute @hr = xp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCaseIf @hr <> 0 Begin

Return NULLEndReturn @objRegExp

End

Page 37: Regular Expressions : JavaScript, VBScript &T-SQL

37

RegExp Object - TestRegExp Object - Test

CREATE FUNCTION dbo.regexObjTest(

@objRegExp integer,@source varchar(5000)

)RETURNS bit ASBEGIN

DECLARE @hr integerDECLARE @results bit

EXECUTE @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source

IF @hr <> 0 BEGINRETURN NULL

END

RETURN @resultsENDGO

Page 38: Regular Expressions : JavaScript, VBScript &T-SQL

38

RegExp Object – ReplaceRegExp Object – Replace

CREATE FUNCTION dbo.regexObjReplace(

@objRegExp integer,@source varchar(5000),@replace varchar(1000)

)RETURNS varchar(1000) ASBEGIN

DECLARE @hr integerDECLARE @result varchar(5000)

EXECUTE @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace

IF @hr <> 0 BEGINRETURN NULL

END

RETURN @resultENDGO

Page 39: Regular Expressions : JavaScript, VBScript &T-SQL

39

RegExp Object - RegExp Object - 예제예제

패턴에 매치여부패턴에 매치여부패턴에 매치되는 문자바꿈패턴에 매치되는 문자바꿈

•패턴에 매치여부Declare @regexp integerSet @regexp = dbo.regexpObj(‘[^a-z]’, 0, 1);Select * From AccountWhere odo.regexpObjTest(@regexp, colnm) = 1

•패턴에 매치되는 문자바꿈Declare @regexp integerSet @regexp = dbo.regexpObj(‘[^a-z]’, 1,1);Select dbo.regexpObjReplace(@regexp, colnm, ‘’) From Account

Page 40: Regular Expressions : JavaScript, VBScript &T-SQL

40

연습연습연습연습

Page 41: Regular Expressions : JavaScript, VBScript &T-SQL

41

정규식만들기정규식만들기

Com, net, org, co.kr Com, net, org, co.kr 을 포함한 도메인을 포함한 도메인A-Z, 0-9, - and _A-Z, 0-9, - and _

이메일주소이메일주소로그인 아이디로그인 아이디큰따옴표로 둘러싸인 문자열큰따옴표로 둘러싸인 문자열달러액수달러액수시각 시각 (9:19 (9:19 am, 12:30 pm)am, 12:30 pm)URLURLDatesDatesTimeTime

Page 42: Regular Expressions : JavaScript, VBScript &T-SQL

42

정규식이해정규식이해 -1-1

Cat, ^Cat, ^Cat$, ^$, ^Cat, ^Cat, ^Cat$, ^$, ^[Ss]mith, gr[ae]y[Ss]mith, gr[ae]y<H[123456]>, <H[1-6]>, <H[-1-6]><H[123456]>, <H[1-6]>, <H[-1-6]>[0-9A-Z_!.?], [^1-6] [0-9A-Z_!.?], [^1-6] q[^u]q[^u]

Iraqi Iraqian miqra qasida qintar qoph zaqqum Qantas Iraqi Iraqian miqra qasida qintar qoph zaqqum Qantas IraqIraq

07[-./]04[-./]76 , 07.04.7607[-./]04[-./]76 , 07.04.76gra|ey, gr(a|e)y , gr[ea]ygra|ey, gr(a|e)y , gr[ea]y^From|Subject|Date: , ^(From|Subject|Date):^From|Subject|Date: , ^(From|Subject|Date):cat, \<cat, cat\>, \<cat\>cat, \<cat, cat\>, \<cat\>Color|Colour, Colou?rColor|Colour, Colou?r(July|Jul) (fourth|4th|4) , (July?) (fourth|4(th)?)(July|Jul) (fourth|4th|4) , (July?) (fourth|4(th)?)

Page 43: Regular Expressions : JavaScript, VBScript &T-SQL

43

정규식이해정규식이해 -2-2

\<the the>\, \<the +the\>, \<([A-Za-z]+) +\1\>\<the the>\, \<the +the\>, \<([A-Za-z]+) +\1\>1980.11.11 , /filename\..../1980.11.11 , /filename\..../[ [ ]*, [ \t]*, [ *|]*, [ \t]*, [ *| *], [ *|\t*]*], [ *|\t*]\W\w\w\w\w\w\W \W\w\w\w\w\w\W \s\D\S\W\s \s\D\S\W\s /^$/ - /^$/ - 빈줄빈줄/^cat$/ - /^cat$/ - 한줄에 한줄에 "cat" "cat" 이란 문자만이란 문자만[Aa] – “A” [Aa] – “A” 또는 “또는 “ a”a”gr[ae]y - g gr[ae]y - g 다음 다음 r r 다음 다음 (a (a 또는 또는 e) e) 다음 다음 yy[-0-9] – “-” [-0-9] – “-” 또는 숫자또는 숫자[\d{1,3}\.]{3}\d{1,3}[\d{1,3}\.]{3}\d{1,3}\w+\.\w+\@\w+\-?\w+\.[a-z]{2,4}\w+\.\w+\@\w+\-?\w+\.[a-z]{2,4}