.NET balanced group regexes 내 머리가 폭발합니다..NET Regex 밸런싱 그룹 표현식 - 균형이 맞지 않을 때 일치합니다.
다음other stuff blah blah....
{
stuff stuff
{key:
stuff
stuff
}
} more stuff.....
내 정규식입니다 : 내가 일치하도록 노력하고있어이 문자열있어 그래서
[^{}]* # anything that isn't { }
\{ # starting with {
(?> # atomic group: throw away backtracks on exit
[^{}]+
|
\{(?:\w+:)?(?<DEPTH>) # on matching { plus optional "word:" push stack
|
\}(?<-DEPTH>) # on matching } pop stack
)*
(?(DEPTH)(?!)) # if depth unbalanced, fail match
\} # ending with }
[^{}]* # anything that isn't { }
을, 나는, 중괄호 균형과 일치하기 위해 노력하고있어 어디 여는 중괄호의 일부 선택적 단어 뒤에 콜론이옵니다. 위의 정규식 내 예를 들어 문자열과 일치,하지만 난이 중괄호를 제거하는 경우 (즉, "그것을 불균형) :
other stuff blah blah....
{
stuff stuff
{key:
stuff
stuff
} more stuff.....
... 여전히 일치
는는 사람이 어떻게 내 정규식을 해결하는 방법을 말해 줄래! ?
나는 당신의 정규 표현식을 해설했다. 그냥'RegexOptions.IgnoreWhitespace'로 호출하십시오. 폭발 헤드 증후군을 피하는 데 매우 도움이됩니다. –
@Jeff :'(? x) # IgnorePatternWhitespace' 패턴으로'IgnoreWhitespace' 규칙을 만들 수 있습니다. 예를 보려면 http://stackoverflow.com/questions/1961369/net-regex-parsing-of-the-newline-character/1961577#1961577을 참조하십시오. –