2015-01-24 2 views
1

Racket/Scheme에서 정규 표현식을 사용하여 문자열에서 대괄호와 일치하는 데 어려움이 있습니다. 대괄호를 이스케이프 처리해야한다고 생각했습니다. 정규 표현식에서 다른 용도로 사용되기 때문에 시도했습니다. 이들의regexp matching bracket "("in string

(regexp-match #rx"(" "(") 

(regexp-match #rx"\(" "(") 

(regexp-match #rx"[\(]" "(") 

없음

답변

3

예, 당신은 괄호를 탈출해야합니까. 제대로 작동하지 않지만 라켓에서 정규 표현식 리터럴은 단순히 일반 문자열을 구문 분석을 사용, 그래서 당신은 백 슬래시를 이스케이프해야합니다.

(regexp-match #rx"\\(" "(") ; => '("(") 
2

여기에 double escapes을 사용해야합니다. 계획에

(regexp-match #rx"\\(" "(") 
0

이 있습니다 (단 #!racket 작동) 어떤 regexp-match. 그러나 SRFI-115 표준 Scheme 보고서에 대한 정규식을 구현하고 있습니다.

(regexp-matches? "(" "(") ; ==> #t 

당신이 계획 정규 표현식은 복잡한 일치를 표현하는리스트 구조를 사용하기 때문에 그것이 인용 할 필요가 없습니다 이유 :이 RE 구현과 대답은 이것이다. 예 :

(regexp-search '(w/nocase (~ ("Aab"))) "b") => #<regexp-match>