고르지 않은 수의 탈출 기호와 일치합니다
-
03-07-2019 - |
문제
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
제휴하지 않습니다 StackOverflow