2013-12-20 2 views
2

NET regex 엔진에서 작동하는 다음 정규 표현식을 사용합니다 (FYI, name = "value1, value2"형식의 명령 줄 인수를 구문 분석 할 경우 참고). name2 = value3 따옴표가).NET 호환 정규식에서 C++ 11 호환 정규식

(?<name>[^=]+)=?((?<quoted>\""?)(?<value>(?(quoted)[^\""]+|[^,]+))\""?,?)

를 선택하고 그러나 C++ 11이에 사용하고자하는 경우, 나는 어떤 이름을 그룹 또는 C++의 정규 표현식 구문 conditions (? 완전히 확실하지)이없는 것으로 알고 있습니다.

정규식을 쉽게 테스트하고 C++ 11에서 작동 할 수있는 도구/웹 페이지를 찾지 못했기 때문에 여기에 묻습니다. (반면에 거의 모든 다른 플랫폼 용 도구가 있습니다). 나에게 그룹, 하위 그룹을 표시하고 유용한 오류 메시지를 표시 할 수있는 온라인 (또는 오프라인) C++ 11 호환 정규식 테스터 도구에 대한 링크도 수용 가능한 대답입니다.

추신 : 나는 구문 분석기가 파서에 가장 적합한 연습이라는 것을 이해하지만이 간단한 정규 표현식을 사용할 수있는 단점이있는 대부분의 명령 줄 도구에 대해서는 아무런 문제없이 사용하고 있습니다. 있다.

답변

0

C++ 11에서 정규 표현식에 대한 지원은 여전히 ​​대략적입니다. 예를 들어 gcc는 버전 4.9에서만 우수한 정규 표현식 지원을 제공합니다. 귀하의 환경을 구체적으로 밝히지는 않았지만 지원되는 내용과없는 내용은 in this question입니다.

가장 좋은 방법은 boost regex 라이브러리를 사용하는 것입니다. Understanding Marked Sub-Expressions and Captures을 읽어야합니다. 이것은 잘 작동 http://coliru.stacked-crooked.com/a/8950eb9c097b0db1

+0

: 테스트 및 실험을 위해 당신의 요청에 따라

여기 부스트 기사에서 예를 적응 준비 환경 설정 올바른 컴파일 플래그 g++-4.8 -O2 -Wall -pedantic -pthread -DBOOST_REGEX_MATCH_EXTRA main.cpp -lboost_regex에,이다, 그것은 좀 더 쉽게 만들려면 나를 위해. 다른 사람 (또는 더 나은 도구)을 찾은 사람들에게이 대답을 계속 업데이트하도록 요청할 것입니다. – Ani