카테고리 없음

[정규표현식] 하나씩 해보기 (1)

sheriff 2022. 6. 9. 11:42

정규표현식이 필요한 경우가 생기는데 그때 를 위해  예제를 작성해놓고 참고하자.

  • 문자 1개
  • 포함된 문자
  • 포함된 문자 조합
  • 한번에 다 써보기

 

문자 1개

Regular Expression Decription example
. 문자 1개 "h".matches(".");
String text = "a"; // 문자 1개
System.out.println("a.matches(\".\") = " + text.matches("."));
System.out.println("a.matches(\"..\") = " + text.matches(".."));
output:
a.matches(".") = true
a.matches("..") = false

text = "aa"; // 문자 2개로 변경
System.out.println("a.matches(\".\") = " + text.matches("."));
System.out.println("a.matches(\"..\") = " + text.matches(".."));
output:
aa.matches(".") = false
aa.matches("..") = true

text = "*1"; // 특수문자와 숫자로 변경
System.out.println("*1.matches(\".\") = " + text.matches("."));
System.out.println("*1.matches(\"..\") = " + text.matches(".."));
output:
*1.matches(".") = false
*1.matches("..") = true

text = "한글"; // 한글로 변경
System.out.println("한글.matches(\".\") = " + text.matches("."));
System.out.println("한글.matches(\"..\") = " + text.matches(".."));
System.out.println("한글.matches(\".+\") = " + text.matches(".+"));
System.out.println("한글.matches(\".*\") = " + text.matches(".*"));
output:
한글.matches(".") = false
한글.matches("..") = true
한글.matches(".+") = true
한글.matches(".*") = true

text = ""; // 빈 문자열로 변경
System.out.println("\"\".matches(\".+\") = " + text.matches(".+"));
System.out.println("\"\".matches(\".*\") = " + text.matches(".*"));
output:
"".matches(".+") = false // 1개 이상이라서 false
"".matches(".*") = true // 0개 이상이라서 true

text = "강아지";
System.out.println("강아지.matches(\"강아.\") = " + text.matches("강아."));
System.out.println("강아지.matches(\"강아지.\") = " + text.matches("강아지."));
output:
강아지.matches("강아.") = true
강아지.matches("강아지.") = false // 강아지 뒤에 문자가 없기 때문에 false

text = "김철수";
System.out.println("김철수.matches(\"김.수\") = " + text.matches("김.수"));
output:
김철수.matches("김.수") = true

text = "김박수";
System.out.println("김박수.matches(\"김.수\") = " + text.matches("김.수"));
output:
김박수.matches("김.수") = true
  • 표현식 한개당 문자 1개를 의미
  • 표현식을 두개 사용하면 문자 2개를 의미한다.
  • 특수문자, 숫자, 한글 모두 가능하다.
  • 표현식 뒤에 '+' 를 붙이면 '문자 1개 이상' 을 의미한다.
  • 표현식 뒤에 '*' 를 붙이면 '문자 0개 이상' 을 의미한다.
  • 정해진 문자가 있고 특정 위치에 임의의 문자가 필요한 경우 사용하면 좋을듯하다.

정규표현식에 포함된 문자 1개

Regular Expression Decription example
[expression] expression에 포함된 문자열 중에 하나라도 존재하면 true "a".matches("[abc]")
String text = "a";
System.out.println("a.matches(\"[abc]\") = " + text.matches("[abc]"));
System.out.println("a.matches(\"[bcd]\") = " + text.matches("[bcd]"));
output:
a.matches("[abc]") = true
a.matches("[bcd]") = false

text = "abc";
System.out.println("abc.matches(\"[abc]\") = " + text.matches("[abc]"));
System.out.println("abc.matches(\"[abcd]\") = " + text.matches("[abcd]"));
output:
abc.matches("[abc]") = false
abc.matches("[abcd]") = false

text = "My name is Kennen";
System.out.println("text.matches(\"My [Nn]ame is Kennen\") = " + text.matches("My [Nn]ame is Kennen"));
output:
text.matches("My [Nn]ame is Kennen") = true

 

  • 표현식에 포함된 문자 1개를 의미
  • !!주의 : 1개 이상을 표현하진 않기 때문에 문자 "abc"를 "abc" 에 적용했을 경우 false이며, "abcd" 에 적용했을 경우에도 false이다.

정규표현식에 포함된 문자 1개 + 조합

Regular Expression Decription example
[expression][expression] 정규표현식에 포함된 문자 1개 조합 "af".matches("[abc][efg]")
String text = "af";
System.out.println("af.matches(\"[ab][fg]\") = " + text.matches("[ab][fg]"));
System.out.println("af.matches(\"[af]\") = " + text.matches("[af]"));
output:
af.matches("[ab][fg]") = true
af.matches("[af]") = false

text = "afyl";
System.out.println("text.matches(\"[ae][fg][yj][lm]\") = " + text.matches("[ae][fg][yj][lm]"));
output:
text.matches("[ae][fg][yj][lm]") = true
  • 반드시 포함되어야 하는 문자가 있는 경우 사용

한번에 다 써보기

String text = "My Name is Kennen";
System.out.println("text.matches(\"My [Nn]ame is .[ea][nm][nm]en\") = " + text.matches("My [Nn]ame is .[ea][nm][nm].."));
output:
text.matches("My [Nn]ame is .[ea][nm][nm]en") = true