'정규식'에 해당되는 글 3건

  1. 2012.07.25 정규식 정리2
  2. 2012.07.24 정규식 정리
  3. 2012.07.16 정규식
posted by changhozz 2012. 7. 25. 18:36

정규표현식 문법

^ : 문자열의 시작을 나타냄.

$ : 문자열의 종료를 나타냄.

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄.

? : 앞 문자가 없거나 하나있음을 나타냄.

+ : 앞 문자가 하나 이상임을 나타냄.

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄.

.* : 임의의 한 문자가 없을수도 무한정 많을 수도 있음을 나타내는데

띄어쓰기(공백)도 포함하므로 .*을 쓴다면 띄어쓰기에 대하여 신경쓸필요가없다. 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다.

[]내에서 ^ 가 선행하여 나타나면 not 를 나타낸다.

{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다.

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우

a가 3번 이상 5번 이하 반복된 경우를 나타낸다.

( ): 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면

‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다.

|: 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포 함되어있는 문자열을 의미합니다.

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자

\: 위의 각 기능에서 벗어납니다(escape).

(?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))

기본적인 문자열 검증 정규식

^[0-9]*$ : 숫자만

^[a-zA-Z]*$ : 영문자만

^[가-힣]*$ : 한글만

^[a-zA-Z0-9]*$ : 영어/숫자만

.+ : 한문자 이상의 전체문자를 표시한다.

[a-z&&[def]]

d, e, or f (intersection) -- 소문자 a~z까지범위중 def하나와같은것이면참이다. 교집합과같다.

[a-z&&[^bc]]

a through z, except for b and c: [ad-z] (subtraction) -- 소문자 a~z까지의범위중 b c아니면참이다

[a-z&&[^m-p]]

a through z, and not m through p: [a-lq-z](subtraction) -- 소문자 a~z까지의범위중 m~p사의것이아니면참이다.

 

 

 

정규식 표현 예제

이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$ or ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$

휴대폰 : ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$

일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

주민등록번호 : \d{6} \- [1-4]\d{6}

IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

 

'정규식' 카테고리의 다른 글

정규식 정리  (0) 2012.07.24
정규식  (0) 2012.07.16
posted by changhozz 2012. 7. 24. 16:10

정규식 (Regular Expression) - Pattern. Match

Pattern은 정규식을 정의하는데 사용되고 Matcher는 정규식(패턴)을 데이터와 비교하는
역할을 한다.

Pattern p = Pattern.compile("c[a-z]*");
정규식을 매개변수로 Pattern 클래스의 static메서드인 Pattern compile(String regex)을
호출하여 Pattern인스턴스를 얻는다.

Matcher m = p.matcher(data[i]);
정규식으로 비교할 대상을 매개변수로 Pattern 클래스의 Matcher matcher(CharSequence input)를
호출해서 Matcher인스턴스를 얻는다.

<charSequence는 인터페이스로, 이를 구현한 클래스로는 CharBuffer, String, StringBuffer가 있다.>


if(m.matches())
Matcher인스턴스에 boolean matches()를 호출해서 정규식에 부합하는지 확인한다.

 

 

 

 

 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내면 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^가 선행하여 나타나면 not을 나타낸다.

정규식 패턴 

설 명  

결 과 

c[a-z]* 

c로 시작하는 (소문자)영단어 

c,ca, co, car, combat, count

c[a-z] 

c로시작하는(소문자) 두자리 영단어 

ca,co

 c[a-zA-Z]

c로 시작하는 두자리 영단어(대소문자 구분없이.

 cA,ca,co

 c[a-zA-Z0-9]

c로 시작하고 숫자와 영어로 조합된 두 글자 

cA,ca,co,c0 

.* 

모든 문자열 

bat,baby,bonus,c,ca, 등 

c. 

c로 시작하는 두 자리 

cA,ca,co,c.,c0,c# 

c.* 

c로 시작하는 모든 문자열(기호포함)

cA,ca,c#,car,count

c\.

c.와 일치하는 문자열 '.'은 패턴작성에 사용되는 문자이므로 escape문자인 '\'를 사용해야 한다

c.,
 c[0-9]  c와 숫자로 구성된 두자리 문자열

c0,

 c.*t

c로 시작하고 t로 끝나는 모든 문자열

combat, count

 [b|c].*
 [b|c].*
 [b|c].*

 b또는 c로 시작하는 문자열

bat,baby,bonus,c,cA 등 

 [^b|c].*
[^b|c].*
[^b|c].*

b또는 c로 시작하지 않는 문자열 

date,disc, 

.*a.* 

a를 포함하는 모든 문자열
* : 0 또는 그 이상의 문자 

 bat,baby,ca,car,combat,date

.*a.+ 

a를 포함하는 모든 문자열.
+: 1 또는 그 이 상의 문자 +는 *과는 달리 반드시 하나 이상의 문자가 있어야 하므로 a로 끝나는 단어는 포함되지 않았다. 

bat,baby,car,combat,date 

[b|c].{2} 

b 또는 c로 시작하는 세 자리 문자열. (b또는 c 다음에 두 자리이므로 모두 세 자리) 

bat,car 

 

find()는 iterator와 같은 기능을 함.

주어진 소스 내에서 패턴과 일치하는 부분을 찾아내면 true를 반환하고 찾지 못하면 false를 반환한다.
find()를 호출해서 패턴과 일치하는 부분을 찾아낸 다음, 다시 find()를 호출하면 이전에 발견한 패턴과
일치하는 부분의 다음부터 다시 패턴매칭을 시작한다.

'정규식' 카테고리의 다른 글

정규식 정리2  (0) 2012.07.25
정규식  (0) 2012.07.16
posted by changhozz 2012. 7. 16. 22:20

예제)  String a = "0123Abcde332333";

 

1.정규식을 이용하여 알파벳을 원하는 문자로 바꾸기.

  
a.replaceAll("[a-zA-Z]", "2");

결과  : 222123213222

2.정규식을 이용하여 숫자를 어떠한 문자로 바꾸는 코드

a.replaceAll("[0-9]","X");

결과: ABCXXXXXXAAA

3.모든 문자를 대문자로 바꾸는 코드

a.toUpperCase();

결과 :  ABC123213AAA

4.특정문자를 다른 문자로 바꾸는 코드

a.replaceAll("2","T");

결과 : ABC1T3T13AAA

 

 

'정규식' 카테고리의 다른 글

정규식 정리2  (0) 2012.07.25
정규식 정리  (0) 2012.07.24