Ich habe eine Zeichenfolge, die ich in bestimmten Segmenten aufgeteilt werden möchte, aber ich kann nicht das richtige Segment der Zeichenfolge aufgrund von zwei Vorkommen des gleichen Musters übereinstimmen.Finden Sie bestimmte Segmente mit Regex
Mein string:
@if(text.text isempty){<customer_comment>@cc{txt_without_comments}[email protected]</customer_comment>}else{@if(text.answer=='no'){<customer_comment>@{text.text}</customer_comment>}else{<answer>@{text.text}</answer>}[email protected]}[email protected]
I entsprechen müssen: @if (text.text isempty) {@ cc {txt_without_comments} cc @} else {....} endif @
und nicht die verschachtelten Punkte im else-Block.
Hier ist meine unvollständige regex:
(?<match>(?<open>@if\((?<statement>[^)]*)\)\s*{)(?<ifblock>(.+?)(?:}else{)(?<elseblock>.*))(?<-open>)}[email protected])
Diese Regex ist zu gierig in der ifblock Gruppe es soll bei der ersten stoppen} else {Muster.
Edit: Dies ist das genaue Ergebnis i produzieren wollen:
match: @if(text.text isempty){<customer_comment>@cc{txt_without_comments}[email protected]</customer_comment>}else{@if(text.answer=='no'){<customer_comment>@{text.text}</customer_comment>}else{<answer>@{text.text}</answer>}[email protected]}[email protected]
statement: text.text isempty
ifblock: <customer_comment>@cc{txt_without_comments}[email protected]</customer_comment>
elseblock: @if(text.answer=='no'){<customer_comment>@{text.text}</customer_comment>}else{<answer>@{text.text}</answer>}[email protected]
Bitte geben Sie das genaue erwartete Ergebnis an. –
Mein gewünschtes Ergebnis wird auf die Frage gepostet. –