2016-08-02 3 views
1

나는 데이터의 문자열을 제공하고있어 경우는 모든 라켓에 주어진 나열

나는 정규 표현식 매치를 사용하여 문자열에서 숫자를 가지고 넣을 수있는 방법
"data-symbol='1' 
data-symbol='2' 
data-symbol='3' 
data-symbol='4' " 

목록에 넣으십시오. '(1 2 3 4), 순서는 필요하지 않습니다. 또한 숫자와 관련하여 그들은 단지 하나의 예로서 사용될 수 있습니다.

답변

4

당신은 당신의 문자열에서 정보를 추출하는 캡처 그룹과 함께 regexp-match*string->number을 사용할 수는 :

> (map string->number 
     (regexp-match* #px"data-symbol='(\\d+)'" 
         "data-symbol='1' 
         data-symbol='2' 
         data-symbol='3' 
         data-symbol='4'" 
         #:match-select second)) 
'(1 2 3 4) 

regexp-match* 함수는 주어진 문자열에서 정규 표현식의 모든 일치를 발견하고, #:match-select는 선택하는 데 사용됩니다 결과에서 리턴 할 그룹을 캡처합니다. 그런 다음 string->number을 사용하여 일치 항목의 각 요소를 숫자 값으로 변환합니다.

비록 정규식으로 HTML을 구문 분석하려고하는 것처럼 보일 수 있으며이 사이트에서 유명하게 언급 된 것처럼 보입니다 (that way leads only to madness). 대신 Racket의 HTML 파싱 라이브러리 중 하나를 사용하는 것을 고려하십시오.

+0

저는 HTML을 구문 분석하지 않으려 고하지 않습니다. 나는 그 게시물을 매우 잘 알고 있습니다. 또한 답변 주셔서 감사합니다. – DankMemer312