2013-03-12 5 views
0

나는 유효성을 검사하고자하는 표현식 목록을 가지고 있으며 특정 부분을 추출합니다. 작은 따옴표 정규식 '표현식'의 특정 부분 만 추출

  • 문자열 리터럴 및
    하지 않은 문자 임의의 수에 의해 표시,

    • 문자열 리터럴 (아마도 반드시 탈출하지만) :
      이 표현식의 조합을 가질 수있다

    유효한 표현은 콜론 뒤에 시작하고 세미콜론 (;)으로 끝날 것 세미콜론 (;)으로 표시하지 라인 엔드 문자, 있습니다.
    유효한 표현의 예는 다음과 같습니다

    : This is an *expression* 'with' and 'without \'escaped\' string literals', 
    which ends with a semicolon!; 
    

    그리고 그 표현 중
    , 내가 추출하고 싶습니다 :

    • This is an *expression*
    • 'with'
    • and
    • 'without \'escaped\' string literals'
    • , which ends with a semicolon!

    이 가능합니까?

  • +0

    예상되는 출력 동작과 함께 더 유효한 예제를 제공 할 수 있습니까? 또는 추출하려는 각 청크의 테두리를 정의하는 것에 대한 더 나은 설명이 있습니까? – uptownnickbrown

    +0

    안녕하세요. [이 질문 [**] 질문의 ** 업데이트 ** 섹션을보십시오 (http://stackoverflow.com/questions/15351153/using-c11-regex-to-capture-the-contents-of-a-context-free- 문법 파일). 시간이 지남에 따라 점진적으로 변경되어 더 이상 해당 링크의 질문 내용에 적합하지 않기 때문에이 질문을했습니다. – RectangleEquals

    +0

    필자는 기본적으로 콜론과 세미콜론 (앞뒤 공백을 제외하고) 사이의 모든 것을 추출하려고하지만 문자열 리터럴이 아닌지 여부에 따라 그룹화 된 모든 문자열 리터럴을 분리합니다. – RectangleEquals

    답변

    1

    Spoke to RectangleEquals, 대답은 std :: regex re _ ("(? : \\. | [^ ']) *'[[^ '] +")입니다.

    +0

    사실 그것은 문자열 리터럴 자체 안에 있기 때문에'std :: regex re _ ("(? : \\\\. | [^ ']) *'| [^ '] +"); – RectangleEquals

    +0

    완전성을 위해 : 플렉스/DFA와 호환되기 위해서는 'std :: regex re _ ("'(? : \\\\. | [^ \\\\ ']) *'| [^ '] +'); ", 여기에 표시된 것처럼 기본 ECMA 모드에서는 중요하지 않습니다. –