문제

C ++ 사전 처리기 명세서와 일치해야합니다. 이제 전처리 명세서는 여러 줄에 걸쳐있을 수 있습니다.

#define foobar \
    "something glorious"

이 최종 백 슬래시는 탈출 될 수 있으므로 다음은 두 개의 개별 행으로 결과를 얻을 수 있습니다.

#define foobar \\
No longer in preprocessor.

문제는 명시 적 라인 연속을 효율적으로 일치시키는 방법입니다. 나는 다음과 같은 표현을 가지고있다 생각한다 공장. 기본적으로 백 슬래시 수가 이상한 지 테스트합니다. 이 올바른지? 더 효율적으로 할 수 있습니까?

/
    [^\\]           # Something that's not an escape character, followed by …
    (?<escape>\\*?) # … any number of escapes, …
    (?P=escape)     # … twice (i.e. an even number).
    \\ \n           # Finally, a backslash and newline.
/x

(PHP를 사용하여 PCRE 규칙이 적용되지만 답변에 감사드립니다. 어느 리그 족장.)

도움이 되었습니까?

해결책

나는 당신이 필요한 것보다 더 어렵다고 생각합니다. 이 시도:

/
  (?<!\\)    # not preceded by a backslash
  (?:\\\\)*  # zero or more escaped backslashes
  \\ \n      # single backslash and linefeed
/x
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top