Boost's default Regex behaviour is Perl-compatible 및 man perlre는 말한다 :
당신은 목록에서 모든 문자를 일치 문자 []
에서 의 목록을 둘러싸, 문자 클래스를 지정할 수 있습니다. "["가 "^"뒤에 오는 첫 번째 문자 인 경우 클래스는 에없는 문자와 일치합니다. 목록에서 "-"문자는 범위를 지정하므로 a-z
은 "a"와 "z"사이의 모든 문자를 나타냅니다. "-"또는 "]"자체가 클래스 구성원 인 경우 목록의 시작 부분에 ("^"다음에)을 입력하거나 백 슬래시로 이스케이프 처리하십시오. "-"는 닫는 "]"바로 앞의 목록 끝에있을 때 그대로 사용됩니다. (모두 세 개의 동일한 문자 클래스를 지정하십시오. [-az]
, [az-]
및 [a\-z]
을 모든 심지어 EBCDIC 기반 문자 세트에 스물여섯 문자를 포함하는 클래스를 지정 [a-z]
, 다른 이다.) 또한, 범위의 을 엔드 포인트대로 사용하는 문자 클래스 \w
, \W
, \s
, \S
, \d
, 또는 \D
하려고하면은 "-"문자 그대로 이해된다.
그래서 :
boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\"/.: -]+"))
또는
boost::erase_all_regex_copy(args, boost::regex("[^a-zA-Z0-9=\\-\"/.: ]+"))
(이중 백 슬래시주의, 정규식에 대한 탈출 한 리터럴 문자열을 탈출하고, 두 번째)
.
전 권장합니다.
항상 전화 문의 첫 번째 포트로 문서를 확인하십시오!
은 메모리 위치 0x003ef0a4에서'boost :: exception_detail :: clone_impl>와 함께 실패합니다. –
Rella
@Kambumbus - 다시 시도하십시오. –
올바른 장소에 놓으면 전혀 탈출 할 필요가 없습니다. –