SSISO Community

시소당

java에서 문자열에 특정 형태가 있는지 확인하는 방법?

자바에서  string에  특정  문자열  형태가  있는지  확인하는  방법이  알고  싶습니다.
여러  데이터  string  중에서  시간  형식이  xx:xx:xx형태로  있는  부분만  추출하고  싶습니다.

예를  들면

aaaaa  bbbb  ccc  ddd  eeeee  vvvv  111  222  iii  00:01:02

위  같은  문자열을  받았다고  하면  00:01:02  부분이  시간이거든요.  

문제는  앞의  aaa  bbb등의  부분은  일정하지  않습니다.
스페이스의  위치와  횟수  또한  일정하지  않습니다.  

단지  [숫자숫자:숫자숫자:숫자숫자]  이  형태라는  것만  가지고  그  시간부분을  따로  추출해야  하는데  

if문  떡칠을  하면  해낼  수  있겠지만...
그건  너무  코드가  지저분해질  것  같아서..

쉽게  해주는  클래스나  메소드  있나요?

---------------------------------------------------------------------------------------------

문자열을  어떤  패턴으로  컨트롤하고  싶다면,  정규식을  사용하면  유용합니다.

  

인터넷에  정규식    /  Regular  Expression  으로  검색하시면  도움받으실  듯합니다.

  

인터넷에  올라와있는  소스를  약간  변형해  보았습니다.

  

###  Regexp.java

import  java.util.regex.Matcher;
import  java.util.regex.Pattern;

public  class  Regexp  {
  public  static  void  main(  String  args[]){
    //  \d  는  숫자  {2}  자릴수  ,  dd:dd:dd  형태를  찾는  정규식
    String  patternStr  =  "\\d{2}:\\d{2}:\\d{2}";

                Pattern  pattern  =  Pattern.compile(patternStr);

                CharSequence  inputStr  =  "aaaaa  bbbb  ccc  ddd  eeeee  vvvv  111  222  iii  00:01:02";
                Matcher  matcher  =  pattern.matcher(inputStr);
                boolean  matchFound  =  matcher.find();
                String  match  =  matcher.group();
                System.out.printf("matchFound  =  %s  ,  match  =  %s\n"
                                ,matchFound,match);

                int  start  =  matcher.start();
                int  end  =  matcher.end();

                matchFound  =  matcher.find();
                System.out.printf("start  =  %d  ,  end  =  %d  ,  matchFound  =  %s"
                                ,start,end,matchFound);

  }
}

출처  :  네이버지식인  
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106
&eid=2P5I0bMIANg320O/YfEezS0czwGDq+JC&qb=wNq52SBtYXRjaGVy

742 view

4.0 stars