정규식으로 특정 문장내에 인덱스 구하기.
직장동료가 문장내 개인정보검출을 하는 코드를 짜고 있었는데, 어쩌다보니 궁금해서 나도 찾아봐서 공부하게 되었다.
내가 참고한 예제는 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} 이런식으로 해주면 되겠지?
좋은공부였다.