2013-08-06 4 views
-1

긴 문자열 텍스트에서 특정 정보를 추출하려고합니다. 텍스트는 다음과 같습니다정규식을 사용하여 텍스트에서 정보 추출

평가 : 명시 점수 : 17 개 태그 : 앞치마 blonde_hair brown_eyes itaru_chokusha kirigaya_kazuto long_hair 젖꼭지 no_bra nopan 누드 sword_art_online yuuki_asuna 사용자 : openui 내가

  1. 로 추출 할

등급 : 명시 적

  • 점수 : 17
  • 태그 : apron blonde_hair brown_eyes itaru_chokusha ki rigaya_kazuto long_hair sword_art_online yuuki_asuna
  • 사용자 : openui
  • 내가 헤더 만

    내가 마지막에 (.*)를 사용하여 시도
    $imageTitle = "Rating: Explicit Score: 17 Tags: apron blonde_hair brown_eyes itaru_chokusha kirigaya_kazuto long_hair nipples no_bra nopan nude sword_art_online yuuki_asuna User: openui"; 
    preg_match_all("/[a-z]{1,}\:\s/i", $imageTitle, $matches); 
    var_dump($matches); 
    

    을 걸릴 수 있습니다 시도했지만이 전체 텍스트를 준 코드입니다. 이 단어는 한 단어 만 추출합니다.

    preg_match_all("/[a-z]{1,}\:\s[a-z0-9]{1,}/i", $imageTitle, $matches); 
    //Output 
    array (size=1) 
        0 => 
        array (size=4) 
         0 => string 'Rating: Explicit' (length=16) 
         1 => string 'Score: 17' (length=9) 
         2 => string 'Tags: apron' (length=11) 
         3 => string 'User: openui' (length=12) 
    

    나머지 정보를 추출하는 방법은 무엇입니까? 또한 가능한 경우 배열 인덱스와 값으로도 가능합니다.

    +0

    당신 ' 다시 구현하려고합니다. 당신이 말한 것은 데이터가 어떻게 나오는지에 대한 예이지만 이유에 대한 설명은 아닙니다. –

    +0

    @AndyLester, 데이터베이스에 입력하도록 처리하려고합니다. – mrN

    답변

    0

    preg_match_all 작동합니다 :

    $s = 'Rating: Explicit Score: 17 Tags: apron blonde_hair brown_eyes itaru_chokusha 
         kirigaya_kazuto long_hair sword_art_online yuuki_asuna User: openui'; 
    
    if (preg_match_all('#\s*(.+?(?=((^|\s)[A-Z][a-z]*:\s*|$)))#i', $s, $arr))  
        print_r($arr[1]); 
    

    출력 : 정규 표현식을 작성할 수 있습니다 전에 규칙, 영어, 설명 할 수 있어야

    Array 
    (
        [0] => Rating: Explicit 
        [1] => Score: 17 
        [2] => Tags: apron blonde_hair brown_eyes itaru_chokusha kirigaya_kazuto long_hair sword_art_online yuuki_asuna 
        [3] => User: openui 
    ) 
    
    +0

    http://fiddle.re/r763a의 Java에서이 작업을 위해'(\ w +) : ([^ :] +) (? = $ | \ w + :)'을 사용하지만 작동시키지 못했습니다. php/preg_match를 사용합니다. 왜 그런가? –

    +0

    ** 작업 데모보기 : http://ideone.com/zHf4QJ** – anubhava

    +0

    또는 바이올린 : http://fiddle.re/5gb3a – anubhava

    관련 문제