시작태그와 종료 태그 사이의 값을 찾는 정규표현식입니다.

 <aA>.*?</aA>

ex.1)

 나의 블로그 이름은 <a>habony php</a> And <a>blog</a> 입니다.


참고로 .* 를 사용하면 </a> And <a> 사이의 문자열도 일치하게 되므로 .*? 를 사용해야 합니다.


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

RGB 값을 찾는 정규표현식은 의외로 간단합니다. #로 시작해서 0-9a-f인 값을 찾으면 됩니다.

ex.1)

 #[a-fA-F0-9]{6}

ex.2)
 #[[:xdigit:]]{6}


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

이전에 등록한 정규표현식 보다 훨씬 간결한 url 정규표현식입니다.

ex.1)

 https?://[\w./]+

2011/11/29 - url 정규표현식


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

신용카드 번호 정규표현식을 이용하면 잘못된 숫자를 걸러낼 수 있습니다.


마스터 카드 길이는 16자리이고, 첫 숫자는 항상 5가 옵니다.

ex.1)

 5[1-5]\d{14}


비자 카드 길이는 13~16자리로 되어 있고, 첫 숫자는 4로 시작합니다.

ex.2)

 4\d{12}(\d{3})?

아메리칸익스프레스 카드 길이는 15자리이고, 34나 37로 시작합니다.

ex.3)

 3[47]\d{13}

디스커버 카드는 16자리이고, 6011로 시작합니다.

ex.4)

 6011\d{12}

다이너스클럽 카드는 14자리이고, 300~305, 또는 36이나 38로 시작합니다.

ex.5)

 (30[0-5]|3[68]\d)\d{11}


이 다섯 카드 번호를 하나의 정규표현식으로 구현하면 아래의 형식이 됩니다.

ex.6)

 ((5[1-5]\d{14})|(4\d{12}(\d{3})?)|(3[47]\d{13})|(6011\d{12})|((30[0-5]|3[68]\d)\d{11}))


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

이메일 정규표현식에는 여러 종류의 방식이 있습니다. 이중에서 가장 단순한 방법이 아닐까 생각합니다. 

요즘은 이상한(?) 종류의 도메인이 너무 많아서 추출하는 방법이 여간 까다로운게 아닐듯 합니다.

예를 들어 .shop .email .edu 와 같은 도메인을 말합니다.

ex.1)

 \w+[\w.]*@[\w.]+\.\w+

w 는 a-zA-Z0-9_ 를 포함한 문자를 찾는 것이므로 아래 방법을 이용할 수 있습니다.

ex.2)

 (\w+\.)*\w+@(\w+\.)+[a-zA-Z]+


2011/05/02 - 이메일 정규표현식

2011/05/21 - 이메일 정규표현식 #2


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

유닉스 경로는 /로 시작해야 하고, 마지막에 /-_로 긑나서는 안됩니다. 그리고 폴더이름에 공백이 와서도 안됩니다.

"/users/web/mysite/web/cgi-bin"에는 매치되나 "/users/web/my site/web/cgi-bin | users/web/mysite/web/cgi-bin/"에는 매치되지 않습니다.

 ^((?:\/[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*(?:\-[a-zA-Z0-9]+)*)+)$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"?key=value | ?key1=value1&key2=value2" 에는 매치되나 "key=value | ?key=value&"에는 매치되지 않습니다.

 ^((?:\?[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)?(?:\&[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)*)$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"http://website.com/directory/image.gif"에는 매치되나 "www.website.com/image.php"에는 매치되지 않습니다.

 ^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:jpg|jpeg|gif|png))$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"&lt;body&gt; text&lt;br/&gt;More Text &lt;/body&gt; | &lt;a href=&quot;link.html&quot;&gt;Link&lt;/a"에는 매치되나 "&lt;p&gt; Some Text &lt;p&gt; | &lt;hr&gt; | &lt;html&gt;"에는 매치되지 않습니다.

 <(\w+)(\s(\w*=".*?")?)*((/>)|((/*?)>.*?</\1>))

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"12:30 PM | 2004-02-29 | 2004/3/31 02:31:35 AM"에는 매치되나 "2:00 | 2200.2.29 | 0000/00/00 00:00:00 AM"에는 매치되지 않습니다.

 ^(?ni:(?=\d)((?'year'((1[6-9])|([2-9]\d))\d\d)(?'sep'[/.-])(?'month'0?[1-9]|1[012])\2(?'day'((?<!(\2((0?[2469])|11)\2))31)|(?<!\2(0?2)\2)(29|30)|((?<=((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00)\2\3\2)29)|((0?[1-9])|(1\d)|(2[0-8])))(?:(?=\x20\d)\x20|$))?((?<time>((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2}))?)$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"31/12/2003 | 29/2/2004 4:50 PM | 23:59:59"에는 매치되나 "12/31/2003 | 29/2/2003 | 4:00"에는 매치되지 않습니다.

 (?n:^(?=\d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1\d|2[0-8])(?<sep>[/.-])(?<month>0?[1-9]|1[012])\2(?<year>(1[6-9]|[2-9]\d)\d{2})(?:(?=\x20\d)\x20|$))?(?<time>((0?[1-9]|1[012])(:[0-5]\d){0,2}(?i:\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$)

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요


"1/31/2002 10 AM | 2/29/2004 | 4:15:04 PM"에는 매치되나 "2/29/2003 | 12/32/2003 | 4:00"에는 매치되지 않습니다.

 (?n:^(?=\d)((?<month>(0?[13578])|1[02]|(0?[469]|11)(?!.31)|0?2(?(.29)(?=.29.((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|(?!.3[01])))(?<sep>[-./])(?<day>0?[1-9]|[12]\d|3[01])

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

정규표현식 "1 AM | 23:00:00 | 5:29:59 PM"에는 매치되나 ""에는 매치되지 않습니다.

 ^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))$|^([01]\d|2[0-3])(:[0-5]\d){0,2}$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

정규표현식 "12/25/2003 | 08:03:31 | 02/29/2004 12 AM"에는 매치되나 "02/29/2003 1:34 PM | 13:23 PM | 24:00:00"에는 매치되지 않습니다.

 ^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

정규표현식 "01.1.02 | 11-30-2001 | 2/29/2000"에는 매치되나 "02/29/01 | 13/01/2002 | 11/00/02"에는 매치되지 않습니다.

 ^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

정규표현식 "04/2/29 | 2002-4-30 | 02.10.31"에는 매치되나 "2003/2/29 | 02.4.31 | 00/00/00"에는 매치되지 않습니다.

 ^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$

출처: http://www.regexlib.com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

예제(ex #1
 ^([\.\"\'-/ \(/)\s\[\]\\\,\<\>\;\:\{\}]?)([0-9]{3})([\.\"\'-/\(/)\s\[\]\\\,\<\>\;\:\{\}]?)([0-9]{3})([\,\.\"\'-/\(/)\s\[\]\\\<\>\;\:\{\}]?)([0-9]{4})$

출처: http://www.regexlib.com/REDetails.aspx?regexp_id=2537
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"<title>Regular Expression Library</title>"는 매치되나 "<td>Regular Expression Library</td>"와 같은 태그는 매치되지 않습니다.

예재(ex #1
 <title>(.*?)</title>

추출: http://www.regexlib.com/REDetails.aspx?regexp_id=2584
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"10pt" ,"\"Times Roman\"", "Helvetica" ,"Arial", "sans-serif"는 매치되나 "10pt#Times Roman#Helvetica#Arial#sans-serif"는 매치되지 않습니다.

예제(ex #1
 \s*("[^"]+"|[^ ,]+)

출처: http://www.regexlib.com/REDetails.aspx?regexp_id=2696
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"<script language="javascript"> alert("hello"); </script>"는 매치되나 "<style> .body </style>"와 같은 태그는 매치되지 않습니다.

예제(ex #1
 <script[\\.|\\W|\\w]*?</script>

출처: http://www.regexlib.com/REDetails.aspx?regexp_id=2585
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"href=\i\ss080978", "href=\l\ss080978" 는 매치되나 "href=www.kamitsinha.com"는 매치되지 않습니다.

예제(ex #1
 href\s*=\s*\"((\/)([i])(\/)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#]+)*)\"

출처: http://www.regexlib.com/REDetails.aspx?regexp_id=2349
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

"http://kamitsinha.com/regex/191929393-latestnews.htm"는 매치되나 "http://kamitsinha.com/regex/latestnews.htm;http://kamitsinha.com/regex;http://kamitsinha.com/regex/19-latestnews.htm"는 매치되지 않습니다.

예제(ex #1
 (http):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+(\\.[\\w\\-_]+)(\\/)([\\w\\-\\.,@?^=%&amp;:/~\\+#]*[\\w\\-\\@?^=%&amp;/~\\+#]+)(\\/)((\\d{8}-)|(\\d{9}-)|(\\d{10}-)|(\\d{11}-))+([\\w\\-\\.,@?^=%&amp;:/~\\+#]*[\\w\\-\\@?+html^])?

"http://www.sell.com/23D2RQ"는 매치되나 "http://www.sell.com/23D2RQ/aks.html"는 매치되지 않습니다.

예제(ex #2
 href\\s*=\\s*\\\"((\\/)([\\w\\-\\.,@?~\\+#]+)*)\\\

출처: http://www.regexlib.com/REDetails.aspx?regexp_id=2344
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

이 표현식은 "<td>city</td> <head>ok</head>" 태그는 매치되나 태그없는 내용은 매치되지 않습니다.

예제(ex #1
 (\<(.*?)\>)(.*?)(\<\/(.*?)\>)

예제(ex #2
 <(.|\n)*?>


출처: http://www.regexlib.com/REDetails.aspx?regexp_id=2527
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

정확한 ip 주소를 확인하기 위해 0과 255사이의 사이여야 하며, 맨 앞에 0을 포함할 패턴은 *0*1, 10-19 100-199, 1[0-9] {0,2}*2, 20-29, 2[0-9]?*200-249, 2[0-4][0-9]*250-255, 25[0-5]*3-9 30-99, 그리고 [3-9] [0-9]? 입니다.

이것은 10.0.0.0 | 195.167.1.119 | 255.255.255.255 는 매치하지만 010.0.0.0 | 195.167.01.119 | 256.20.55.23 인 ip는 매치되지 않습니다.

예제(ex #1
 ((0|1[0-9]{0,2}|2[0-9]?|2[0-4][0-9]|25[0-5]|[3-9][0-9]?)\.){3}(0|1[0-9]{0,2}|2[0-9]?|2[0-4][0-9]|25[0-5]|[3-9][0-9]?)

출처: http://www.regexlib.com/REDetails.aspx?regexp_id=1291
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

 <?php
 
function alink($data
) {
 
 
// http 
 
$data preg_replace("/http:\/\/([0-9a-z-.\/@~?&=_]+)/i""<a href=\"http://\\1\" target='_blank'>http://\\1</a>"$data
);

 
// ftp 
 
$data preg_replace("/ftp:\/\/([0-9a-z-.\/@~?&=_]+)/i""<a href=\"ftp://\\1\" target='_blank'>ftp://\\1</a>"$data
);

 
// email
 
$data preg_replace("/([_0-9a-z-]+(\.[_0-9a-z-]+)*)@([0-9a-z-]+(\.[0-9a-z-]+)*)/i""<a href=\"mailto:\\1@\\3\">\\1@\\3</a>"$data
);

 return 
$data
;

 }
 
?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

[] 특수문자
[]안의 문자는 하나의 문자를 의미합니다. 즉, 정규표현식 [abcd]는 a나 b나 c나 d를 포함하는 문자열을 의미합니다. 범위를 지정할때는 "-" 문자를 사용할 수 있습니다.

다시 말해 [abcd]는 [a-d]로 표현할 수 있으며, [0123456789]는 [0-9]로 표현합니다. 패턴이 [ab]cd이면 acd, bcd인 문자열을 포함하지만, Acd나 Bcd는 포함하지 않습니다.

{} 특수문자
중괄호는 문자나 문자열의 갯수를 말합니다.

 a{2}b
 a{2,}b
 a{1,3}b
 aab 와 일치하는 문자열을 찾는데, a의 갯수가 2개임을 말합니다.
 aab, aaab, aaaab 와 같이 a의 갯수가 최소 2개 이상인 문자열을 찾습니다.
 ab, aab, aaab 와 같이 a가 1~3개 사이인 문자열을 찾습니다.

() 특수문자
둥근괄호는 ()안의 문자를 그룹화합니다.

 a(bc){2}
 a(bc)*
 
 a뒤에 bc의 개수가 2개로 abcbc 인 문자열을 찾습니다.
 a뒤에 bc가 없거나 하나 이상인 문자열을 찾습니다.
 (예: sea, abcd, abcbcbcbc)

| 특수문자
|는 OR 연산자입니다.

 he|she
 (he|she)is
 (le|li)*ft
 mo(no)+
 he 나 she를 포함하는 문자열을 찾습니다.
 is 앞에 he 나 she를 포함하는 문자열을 찾습니다. (예: heis, sheis)
 ft 앞에 le 또는 li 가 없거나 하나 이상인 문자열을 찾습니다. (예: mlefto, lft, lelift)
 mo 뒤에 no 가 하나 이상인 문자열을 찾습니다. (예: mono, monono. acmonono)

? 특수문자
?는 바로 앞의 문자를 나타내며, 그 문자가 없거나 1개임을 나타냅니다. 예를 들어 a?c는 ?앞의 문자 a가 없거나 하나만 존재하는 문자를 나타냅니다. 따라서 다음 문자열의 패턴에 포함됩니다. 

 hab?ony 
 ka?bcie
 haony 나 habony 에 일치하는 문자열을 찾습니다.
 kabcie 나 kbcie 에 일치하는 문자열을 찾습니다.

^ 특수문자
^는 바로 뒤의 문자를 나타내며, 그  문자열로 시작함을 나타냅니다.

a?bc인 경우 bc앞에 a가 없거나 하나 존재하는 모든 문자열이 패턴에 일치하고, 만일, ^a?bc인 경우는 bc앞에 a가 없는 문자열 bc와 a가 하나 존재하는 문자열 abc를 찾되 이 문자열 중에서도 문자열 앞에 어떤 문자가  없는 문자열만을 찾습니다. 즉, 정규표현식에서 특수문자 ^는 문자열의 맨 처음을 의미합니다.

 ^hab?ony 
 ^ka?bcie
 haony 나 habony 에 일치하는 문자열을 찾지만, ahabony는 일치하지 않습니다.
 kabcie 나 kbcie 에 일치하는 문자열을 찾지만, abcie는 일치하지 않습니다.

패턴이 ^.e인 경우 이 패턴은 e앞에 한 글자가 존재하는 문자열(he, me, ne, se)로 시작하는 모든 문자열을 찾습니다. 마찬가지로 패턴이 ^s.e? 인 경우는 s 다음에 한 문자가 나오고, 그 뒤에 e 가 하나 있거나(sae, sbe), 또는 없는 경우(sa, sb, sc)에 해당하는 문자열로 시작할 때 패턴에 일치한다고 봅니다.

 ^The 
 ^a?bc
 ^.e

 ^s.e?
 The 로 시작하는 모든 문자열을 찾습니다. (예: The girl is beautiful!, Theater)
 bc 나 abc 로 시작하는 모든 문자열을 찾습니다. (예: bc + 3.0, abcdef)
 e 앞에 한 문자가 존재하는 문자열로 시작하는 모든 문자열을 찾습니다.
 (예: he, me, request, settle)
 s 와 임의의 한 문자로 시작하고, 그 뒤에 e문자가 하나 있거나 없는 문자열을 찾습니다. (예: sa, sae, sb, sbe)

$ 특수문자
$ 는 바로 앞의 문자열을 의미하며, 그 문자열로 끝나는 것을 뜻합니다. 즉, ^ 가 문자열의 시작 부분을 가리킨다면, $ 는 문자열의 끝 부분 패턴을 나타냅니다.

예를 들어, 패턴이 a?bc$ 이면, 이는 패턴 a?bc 와 일치하는 문자열 중에서 이 문자열로 끝나는 것만을 찾습니다. 즉, bc앞에 a가 하나 존재하는 abc나 a가 없는 bc로 끝나는 문자열(eeabc, seebc, bc)만을 찾습니다. 패턴 t.e$ 는 t 와 e 사이에 한 글자가 들어가는 문자열(toe, tae, tte)로 끝나는 문자열 패턴에 일치합니다.

만일 패턴이 ^the$ 이면, the 라는 하나의 단어만을 찾습니다.

 a?bc$

 t.e$

 s?e+$

 ^the$

 bc 로 끝나는 문자열 앞에 문자 a가 없거나 하나 존재하는 문자열을 찾습니다.
 (예: eeabc, seebc, bc)
 t와 e사이 임의의 한 문자가 오고, e로 끝나는 문자열을 차즙니다.
 (예: onthetoe, bctae, appetitte)
 첫글자 s 나 e로 시작하고, 하나이상의 e로 끝나는 문자열을 찾습니다.
 (예: e, se, ee, eee, see, seeee)
 the로 시작해서 the로 끝나는 문자열를 찾습니다.

참고: 2011/04/25 - [phP 들어가기/정규표현식] - Posix 정규 표현식 #1

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

간단한 이메일 표현식으로 복잡한 이메일은 제한될 수 있습니다. 도메인 이름 "숫자", "영문", "_"을 허용하고, 최상위 도메인은 2~3개 문자만을 허용합니다.

예제 (ex #1
 ^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$  

이메일 정규현식 출처: http://www.regexlib.com/REDetails.aspx?regexp_id=16

이곳에 가시면 테스트도 해볼 수 있습니다.
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

이메일 주소는 보통 다음 표의 규칙을 가집니다.

 아이디  도메인
 0-9  0-9
 a-z  a-z
 A-Z  A-Z
 -_  -.

다음의 이메일 주소가 username@habony.tistory.com이라고 가정하여 설명하면 다음과 같을 것입니다.

 ^( [-a-zA-Z0-9._] +@ [-a-zA-Z0-9.]+ (\.[-a-zA-Z0-9]+)+)*$
  └ 유저이름 └ 도메인 └ com
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

펄 호환 정규표현식은 다음 표의 함수를 사용할 수 있습니다.

 함수명
 preg_match
 preg_match_all
 preg_replace
 preg_split
 preg_quote

펄 호환 정규표현식은 구분자로 슬레쉬(/) 또는 작은 따옴표(')로 시작을 합니다. 구분자 다음에 매칭되는 문자열에 다양한 작업을 하는 변경자가 올 수 있습니다.

 /my string/
 /my string/i
 'my string'
 'my string'x

 약어  의미
 /  패턴 시작, 패턴의 종료
 i  대소문자를 구분
 x  공백 무시
 e  preg_replace에서만 사용되며, \\부분을 치환하는 기능을 합니다.

구분자 다음에 오는 문자열에 다음 표의 일반 문자 형식을 사용할 수 있습니다.

 약어  의미
 \b  단어 영역 찾기
 \B  단어 영역이 아님
 \A  제목 시작
 \z  제목 끝
 \Z  제목의 끝이거나 끝에서 줄바꿈
 \d

 십진수 표현. ex) ^[0-9]

 \D  십진수가 아닌 문자. ex) [^0-9]
 \s  모든 공백 문자. ex) \f\r\n\t\v
 \S  공백 문자가 아닌 문자. ex) [^\f\r\n\t\v]
 \w

 영문 대소문자와 밑줄, 숫자
 
ex) ^[a-zA-Z0-9_]

 \W

 영문 대소문자와 밑줄, 숫자가 아닌 문자.
 ex) [^a-zA-Z0-9_]


보통 "/habony(\w+)php/i"의 예로 작성합니다.


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

정규 표현식(Regular Expression)에는 Posix(Portable Operating System Interface)정규 표현식과 펄 호환(Pcre: Perl-Compatible) 정규 표현식이 있습니다.

Posix 정규 표현식은 대상 문자열에 지정된 패턴과 일치하거나 일치하는 일부분을 검색하여, 다음 표의 함수를 이용하여 패턴을 만들거나 치환해줍니다.

  함수명          의 미
 ereg  주어진 패턴으로 문자열을 검색
 eregi  ereg와 동일하나 대소문자 구분이 없음
 ereg_replace  주어진 패턴으로 문자열을 검색, 다른 문자열로 치환해줌
 eregi_replace  ereg_replace와 동일하나 대소문자 구분이 없음
 split  주어진 패턴으로 문자열을 검색, 나누어 베열로 반환해줌
 spliti  split와 동일하나 대소문자 구분이 없음
 sql_regcase  주어진 문자열에 매칭이 되도록 대소문자 구분없이 정규표현식을 만들어 줌

패턴 기본 구문

패턴은 다음 표의 매칭되는 문자열을 찾습니다.

 패턴  의미
 [0-9]  0부터 9사이 매칭되는 숫자를 찾습니다.
 [0123456789]
 [a-z]  a부터 z사이 매칭되는 소문자를 찾습니다.
 [A-Z]  A부터 Z사이 매칭되는 대문자를 찾습니다.
 [a-zA-Z]  a부터 z사이 매칭되는 대소문자를 찾습니다.
 [a-Z]

"-"는 두 문자 사이의 범위를 나타내며, [^abc]처럼 ^이 시작 문자에 오면 abc를 제외한 문자를 찾습니다.

 패턴  의미
 [^0-9]  0부터 9사이 매칭되는 숫자를 제외한 문자를 찾습니다.
 [^a-z]  a부터 z사이 매칭되는 소문자를 제외한 문자를 찾습니다.
 [^abcd]  abcd를 제외한 문자를 찾습니다.

한정사(qualifiers)

한정사 기호는 +,*,?를 사용할 수 있으며 , 문자열의 횟수나 순서를 표현합니다.

 기호  의미
 x+ 하나 이상의 x를 포함하고 있는 문자열에 매칭합니다. xyz나 axxyz에 매칭하지만, ayz는 해당되지 않습니다.
 x* 0 또는 하나 이상의 x를 포함합니다. xyz나 ayz, axxyz에 매칭합니다.
 x? 0 또는 하나의 x만을 포함합니다. xyz와 ayz는 매칭되지만, xxxyz는 매칭되지 않습니다.

정규표현식 영역(Bounds)

영역은 중괄호 안에 숫자를 지정하여 중괄호 앞에 오는 문자나 숫자의 횟수를 말합니다.

 형식  의미
 12{3} 1뒤에 2가 3번 나타나는 것을 뜻합니다.
 12{3, } 1뒤에 2가 3번이상 나타나는 것을 뜻합니다.
 12(3,5} 1뒤에 2가 3번에서 5번 나타나는 것을 뜻합니다.

정규표현식 특수문자 사용

정규표현식에 다음 표의 특수문자를 사용할 수 있습니다.

 형식 의미
 . 하나의 문자에 해당합니다. "a. [0-9]"는 a뒤에 하나의 문자가 오고, 뒤에 숫자가 옵니다. ab1, az3, am9등이 매칭됩니다.
 ^ 문자열의 시작을 의미합니다. "^ab"는 문자열의 시작 부분에 "ab"가 나오는데, 이는 about, abuby, abcd에 매칭됩니다.
 $ 문자열의 끝을 뜻합니다. ab$뒤에 문자열이 끝나는 것으로 12ab, asab, technoab등에 매칭하지만 dropabe는 매칭되지 않습니다.

문자 클레스(Character classes)

문자클레스 표기법은 다음 표와 같습니다.

 형식  의미
 [[:alnum:]]  숫자, 영문자에 매칭합니다. [a-zA-Z_0-9]와 같습니다.
 [[:digit:]]  숫자에 매칭합니다. [0-9]와 같습니다.
 [[:alpha:]]  영문자에 매칭합니다. [a-zA-Z]와 같습니다.

정규표현식에는 OR연산자인 |를 이용할 수 있습니다. "abc|xyz"는 abc 또는 xyz에 해당되며, 정규표현식에 사용되는 특수문자를 일반 문자로 사용하려면 역슬레쉬를 이용하는데, \$, \|, \^, \{로 표현하면 됩니다.
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요