프로그래밍공부/자바

정규식으로 특정 문장내에 인덱스 구하기.

중랑구보안관 2020. 6. 29. 16:06

직장동료가 문장내 개인정보검출을 하는 코드를 짜고 있었는데, 어쩌다보니 궁금해서 나도 찾아봐서 공부하게 되었다.

 

내가 참고한 예제는 https://offbyone.tistory.com/400 여기에 있고,

아래는 내가 짠 코드이다.

 

public class reTest{

 public static void main(String[] args){

  StringBuilder sb = new StringBuilder();

  String str = "이 메일주소는 testEmail@naver.com입니다";

  String reStr= "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}";

  Pattern pattern = Pattern.compile(reStr)

  Matcher matcher = pattern.matcher(str);

 

 boolean found = false;

 while(matcher.finde()){

  sb.append(matcher.start()) //시작인덱스

      .append(" ")

      .append(matcher.end()); //마지막인덱스

     boolean found = true;  

}

if(!found)

 sb.append("찾지못함");

 

 System.out.println(sb.toString());

 }

}

 

문장내에서 이메일의 인덱스를 검출하는 방법이다.

 

결론은 Pattern.compile()메소드의 인자로 내가 검출하고자 하는 정규식을 넣어주고

pattern.matcher()메소드의 인자로 문장을 넣어주면

리턴된 matcher객체의 start() / end()메소드로 간단하게 문장내 정규식에 맞는 부분을 검출해 낼 수 있다.

주민등록번호라면 정규식을 [0-9]{6}-[0-9]{7} 이런식으로 해주면 되겠지?

 

좋은공부였다.