2013-10-15 2 views
-2

C# 코드에서이 정규식을 발견했습니다. 누군가가 나에게 제발 설명 할 수 :누군가가이 정규 표현식을 설명 할 수 있습니까

@"(?s)\{\{\s*" + templateTitle + @"(.*?)}}\r?\n?" 

을 나는 그것을 테스트하고 그것을

{{ templateTitleValue  anything}} 

같은 텍스트가 내가 이해하지 못하는 것은 두 가지입니다 반환 '}}'처럼 \로 이스케이프되지 않은 두 '}}'. 그리고 처음에는 '(? s)'이 무엇입니까?

감사합니다.

+0

도구로 사용 : http://regexr.com?36ohq – gunr2171

+0

이 양식이 필요한 경우 해당 질문을 함께 추가 할 수 있습니다. – sln

답변

6

사실, 여는 중괄호도 이스케이프하지 않아도됩니다. 정량화자가 아니라는 것은 문맥 상 분명합니다 (X{1,3}에서와 같이 X, XX 또는 XXX과 일치합니다). 어쨌든 (그리고 닫는 것들을 피하기 위해) 어쨌든 그들을 도주하는 것은 좋은 습관입니다. 정규 표현식이 무언가로 바뀌는 경우를 대비해서 일 수 있습니다.

(?s)은 "도트 (.)가 줄 바꿈을 포함하여 모두 자와 일치하도록 허용합니다"를 의미합니다. 이것은 Singleline or DOTALL option이라고도합니다.

관련 문제