자바 정규식
import java.util.regex.*; // Pattern과 Matcher가 속한 패키지
class
RegularEx2
{
public static void main(String[] args)
{
String[] data = {"bat", "baby", "bonus", "c",
"cA",
"ca", "co", "c.",
"c0", "c#",
"car","combat","count", "date",
"disc"
};
String[] pattern =
{".*","c[a-z]*","c[a-z]", "c[a-zA-Z]",
"c[a-zA-Z0-9]",
"c.","c.*","c\\.","c\\w","c\\d","c.*t",
"[b|c].*",
".*a.*", ".*a.+",
"[b|c].{2}"
};
for(int x=0; x < pattern.length; x++)
{
Pattern p =
Pattern.compile(pattern[x]);
System.out.print("Pattern : " + pattern[x] + " 결과:
");
for(int i=0; i < data.length; i++)
{
Matcher m =
p.matcher(data[i]);
if(m.matches())
System.out.print(data[i] + ",");
}
System.out.println();
}
} // public static void main(String[] args)
}
/*
Pattern : .* 결과:
bat,baby,bonus,c,cA,ca,co,c.,c0,c#,car,combat,count,date,disc,
Pattern :
c[a-z]* 결과: c,ca,co,car,combat,count,
Pattern : c[a-z] 결과:
ca,co,
Pattern : c[a-zA-Z] 결과: cA,ca,co,
Pattern : c[a-zA-Z0-9] 결과:
cA,ca,co,c0,
Pattern : c. 결과: cA,ca,co,c.,c0,c#,
Pattern : c.* 결과:
c,cA,ca,co,c.,c0,c#,car,combat,count,
Pattern : c\. 결과: c.,
Pattern :
c\w 결과: cA,ca,co,c0,
Pattern : c\d 결과: c0,
Pattern : c.*t 결과:
combat,count,
Pattern : [b|c].* 결과:
bat,baby,bonus,c,cA,ca,co,c.,c0,c#,car,combat,count,
Pattern : .*a.* 결과:
bat,baby,ca,car,combat,date,
Pattern : .*a.+ 결과:
bat,baby,car,combat,date,
Pattern : [b|c].{2} 결과:
bat,car,
*/
[참고]쌍따옴표(")내에서 escape문자(\)를 표현하려면 escape문자를 '\\'와 같이 두 번
사용해야한다.
자주 쓰일 만한 몇 가지 패턴들을 만들어서 테스트하였다. 그 결과를 정리해보면 다음과 같다.
참고 URL: http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
|
설명 |
결과 |
c[a-z]* |
c로
시작하는 영단어 |
c,ca,co,car,combat,count, |
c[a-z] |
c로
시작하는 두 자리 영단어 |
ca,co, |
c[a-zA-Z] |
c로
시작하는 두 자리 영단어 (a~z
또는 A~Z, 즉 대소문자 구분안함) |
cA,ca,co, |
c[a-zA-Z0-9] c\w |
c로
시작하고 숫자와 영어로 조합된 두 글자 |
cA,ca,co,c0, |
.* |
모든
문자열 |
bat,baby,bonus,c,cA,ca,co,c.,c0,c#,car,combat,count,date,disc, |
c. |
c로
시작하는 두 자리 |
cA,ca,co,c.,c0,c#, |
c.* |
c로
시작하는 모든 문자열(기호포함) |
cA,ca,co,c.,c0,c#,car,combat,count, |
c\. |
c.와
일치하는 문자열 '.'은
정규식표현에 사용되는 문자이므로 escape문자인 '\'를
사용해야한다. |
c., |
c\d c[0-9] |
c와
숫자로 구성된 두 자리 문자열 |
c0, |
c.*t |
c로
시작하고 t로 끝나는 모든 문자열 |
combat,count, |
[b|c].* [bc].* [b-c].* |
b
또는 c로 시작하는 문자열 |
bat,baby,bonus,c,cA,ca,co,c.,c0,c#,car,combat,count, |
[^b|c].* [^bc].* [^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, |
출처 : Tong - gaury님의 program data(JAVA)통