2016-08-23 3 views
3

나는 단순히 모든 16 진수 색상 값을 CSS 파일로 가져 오려고합니다. 16 진수 값은 #fff 정도 여기 #FFFFFF 내가이자바를 사용하여 CSS에서 16 진수 색상을 추출

  • "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"

하지만 전혀 작동하지

  • "^#[0-9a-zA-F]{3}"
  • "#([a-f0-9]{3}){1,2}/i"에 사용되는 정규식 수 있습니다.

    은 내가 # 969696 #ccc

    # 996633 # 333와 같은 결과를 기대 ....

    그러나 아무것도, 내가 잘못 가고 어떤 생각을 점점하지입니까?

    final String HEX_PATTERN_STRING = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"; 
    Pattern pattern = Pattern.compile(HEX_PATTERN_STRING); 
    try { 
         final URL CSS = new URL("https://maxcdn.bootstrapcdn.com/.../bootstrap.min.css"); 
         URLConnection data = CSS.openConnection(); 
         StringBuilder result = new StringBuilder(); 
         try (BufferedReader in = new BufferedReader(
           new InputStreamReader(
             data.getInputStream()) 
         )) { 
          in.lines().forEach(result::append); 
    
          Matcher matcher = pattern.matcher(result); 
          while (matcher.find()) { 
           System.out.println(matcher.group(0)); 
          } 
          System.out.println("Done"); 
         } 
    
        } catch (IOException ex) { 
        } 
    
  • +0

    당신이 실제로 어디서든 행진하는 사람과'HEX_PATTERN_STRING' 연관 표시되지 않습니다. –

    +2

    'Final String HEX_PATTERN_STRING = "# (? : [A-Fa-f0-9] {6} | [A-Fa-f0-9] {3})";'을 사용하고'Pattern pattern = Pattern. 'Matcher matcher'로 시작하는 줄 앞에 컴파일 (HEX_PATTERN_STRING); –

    답변

    2

    참고하여 패턴이 전체 문자열 일치를 요구, ^ (문자열의 시작) 및 앵커 $ (문자열의 끝을) 포함 : 여기

    는 코드입니다.

    이 앵커는 제거해야합니다.

    당신은 어느 /.../ 같은 정규식 구분 기호를 사용할 수 없습니다 자바 정규식에서, 당신은 (Pattern.UNICODE_CASE로, 보통) 패턴 내부에 (?i)로 수식에 합격하거나, Pattern.CASE_INSENSITIVE 플래그의 도움으로 할 수 있습니다.

    또한 숫자가 필요하지 않은 경우 캡처 그룹을 (?:...)으로 캡처 할 수 있습니다.

    사용

    final String HEX_PATTERN_STRING = "#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})"; 
    
    +0

    내 나쁜 내가 그냥이 줄을 넣어 깜빡'pattern = Pattern.compile (HEX_PATTERN_STRING);'내 코드에서 btw 나는 paatern을 선언하고있다. 질문을 업데이트 중입니다. – Mak

    +0

    예상되는 결과를 나타내며 "작동하지 않는"의미를 잊지 마십시오. –

    +0

    나는 앵커를 제거하는 것만으로도 충분하다고 생각합니다. 나는 두 번 체크했다 : Java에 의해 내부적으로 문자열로 변환되기 때문에'StringBuilder'를'matcher'에 전달할 수 있습니다. –