2013-04-19 1 views
0

간단한 정규식 패턴이라고 생각합니다.첫 번째와 세 번째 단어의 모든 일치 패턴 (모든 것을 포함 함)

어쩌구 http://www.google.com :

은 내가 이렇게 보이는 텍스트 파일이 있습니다. 다른 여기 뭔가, ㅋㅋ bah. http://x.oddree.com/image1.jpg. 좀 더 많은 텍스트를 ... blah blah. 나는 거기에서 잡기 위해 노력하고 무엇 http://x.oddree.com/image2.jpg

은 http로 시작하여 JPG로 끝나는 모든 텍스트입니다. 전체 URL이 아닙니다. .jpg로 끝나는 것만. 즉

, 내 출력이 원하는 :

http://x.oddree.com/image1.jpghttp://x.oddree.com/image2.jpg

내 정규식은 다음과 같습니다 ". \의 B (HTTP) * (JPG) \ B를"과 작동하는 것 같습니다. 그러나 패턴 매치와 함께 사용하면 http의 첫 번째 발생에서 jpg의 마지막 발생까지 모든 것을 얻게됩니다. 나는 \ b를 \ b로 바꾸는 것을 두 번 이스케이프해야한다는 것을 알고 있지만 여전히 예상대로 작동하지 않습니다.

나는 이것에 대해 몇 시간 동안 벽에 머리를 두드렸다.

   if(file.exists()) 
      { 
       StringBuilder text = new StringBuilder(); 

       try { 
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        String line; 

        while ((line = br.readLine()) != null) { 
         text.append(line); 
         text.append('n'); 
        } 
       } 
       catch (IOException e) { 
        //TODO Write some error handling. 
       } 

       Pattern pattern = Pattern.compile(
         "\\b(http).*(jpg)\\b" 
        ); 

       Matcher matcher = pattern.matcher(text); 
       while (matcher.find()) { 

        result.add(matcher.group()); 
       } 

       my_text.setText(result.toString()); 
      } 

답변

0

근무

Matcher m = Pattern.compile("\\bhttp://\\S+?\\.jpg\\b").matcher(s); 
+0

시도 : :-) 여기에

것은 코드입니다! 그래서 그것은 이중 탈출구를 가진 \ S이고 +? 'through'구문을 사용합니다. 표준 RegEx와는 너무 멀리 떨어져 있습니다. 나는 패턴 매치에 대해 더 많은 문서를 읽어야 할 것이다. :-) 그 빠른 대답에 감사드립니다! – RayHaque

관련 문제