2013-08-14 3 views
0

C++의 다음 문자열에서 대괄호() 안의 내용을 추출해야합니다.대괄호 안에 모든 것을 추출하는 정규 표현식

# 82 = IFCCLASSIFICATIONREFERENCE ($, 'E05.11.a', 'Rectangular', # 28);

나는 정규식 다음을 시도했지만 그대로 괄호로 출력한다.

std::regex e2 ("\\((.*?)\\)"); 
if (std::regex_search(sLine,m,e2)){ 
} 

출력은 다음과 같아야합니다

$,'E05.11.a','Rectangular',#28 
+2

그냥 괄호라고 부르는 일반적인 지식입니다. –

+2

'. *?'는'[^ \]] *'이어야하며 그렇지 않아야합니다. –

답변

1

찾고있는 결과는 첫 번째로 일치하는 하위 표현식 즉, [[1].first, m[1].second) 간격으로 구성되어야합니다.

정규 표현식이 묶는 괄호와 일치하지만 그룹화 하위 표현식 ((.*?))을 지정했기 때문입니다. 여기에 출발점이 있습니다 documentation

0

사용 lookaheads : "(?<=\\()[^)]*?(?=\\))". 조심하세요. 중첩 된 괄호에서는 작동하지 않으므로주의하십시오.

backreferences을 사용할 수도 있습니다.

0
(?<=\().*(?=\)) 

시도해보십시오.이 테스트는 하나의 테스터에서만 수행되었지만 작동했습니다. 기본적으로 문자는 ( 이후와 ) 앞에 있지만 문자는 포함하지 않습니다.

관련 문제