JAVA, Android에서 문자열에서 URL추출하기 (정규식)
프로젝트 작업중에 문자열들에서 url을 뽑아야하는 문제가 있었다
두가지의 신경쓸게 있었다.
http, https로 시작하지 않아도 잘되야한다 ex) aaa.com
빨라야한다
처음에 자바의 스트링기능을 사용했다
짧은글은 그럭저럭 하지만 이게 긴글을 대상으로 하니 꽤 눈에 띄일정도로 속도가 정규식과 차이가 나게되었다.
삽질하면서 정규식 만들었다.
이것보다 짧고 좋게 만든것도 있겠지.
PHP, Javascript, python 은 널려있으니 그냥 찾으면되는데
자바는 이 조건을 충족하는게 좀처럼 보이지 않았다.
그래서 직접 삽질해서 했다.
마침 IDE도없는터라 온라인 컴파일러로 깨작깨작했다.
귀찮아서 그냥 소스코드만 적는다
아래 regex 스트링을 잘보면된다.
public static String UrlHtml(String str){
StringBuffer sb = new StringBuffer();
String regex ="[(http(s)?):\\/\\/(www\\.)?a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)";
Pattern p = Pattern.compile(regex);
Matcher m=p.matcher(str);
if(m.find()){
sb.append(m.group(0));
System.out.println("==="+m.group(0));
/*for(int i=0;i<=m.groupCount();i++){
System.out.println(i+"==="+m.group(i));
sb.append(m.group(i));
}*/
}