2016-05-26 8 views
0

Ich habe die folgende Zeichenfolge:Regex: Wer paßt zu besonderen Merkmale in Klammern

Character (ccdd) 

Die c und d 's sind für einen dummen Design Grund notwendig. Ich mag c und d 's speziell markieren, so dass

a) entspricht „cc“ und b) entspricht „dd“

mit der Forderung, dass sie paßt nur, wenn es in den Klammern ist.

Aber ich komme einfach nicht dazu. Das einzige, was ich bisher geschafft ist:

(?<=\()[c]+?(?=\)) 

Edit: Zur weiteren Klärung. Ich muss in InDesign zwei getrennte Stile für c und d in Klammern angeben. Daher suche ich nach zwei separaten Regex-Ausdrücken, einer, der alle cs in Klammern und einer mit allen d's übereinstimmt.

Wer eine Idee?

Vielen Dank!

+0

können Sie eines bestätigen: - Überprüfen Sie, wo '\ G' in indesign funktioniert? – rock321987

+0

['(? <= \ ([^()] *) C + (? = [^()] * \))'] (Http://regexstorm.net/tester?p= (% 3f% 3c% 3d% 5c (% 5b% 5e()% 5d *) c% 2b (% 3f% 3d% 5b% 5e()% 5d *% 5c)) & i = Zeichen + (ccdd)) - wenn unendliche Breite Lookarounds unterstützt werden. –

+0

Ich verstehe nicht ganz, was Sie tun möchten. Ist die Zeichenfolge, die Sie abgleichen wollen, immer '(ccdd)'? Dann können Sie das als ein wörtliches Muster verwenden. –

Antwort

2

Seit dem Unendlichen und Lookbehind \G nicht unterstützt werden, schlage ich vor, mit einem Hack: nur überprüft, ob die c s oder d s mit einer schließenden Klammer gefolgt sind.

Verwenden

c+(?=[^()]*\)) 

und

d+(?=[^()]*\)) 

das funktionieren wird hacken, wenn die Klammern gut ausgewogen sind und wenn es keine verschachtelten Klammern.

+0

Die neuesten Versionen von InDesign unterstützen '\ K'. Kann das als Alternative für Ihre '\ G' Lösung verwendet werden? (Ich weiß nicht, was '\ G' tut, aber es klingt ziemlich ähnlich.) – usr2564301

+0

' \ K' lässt den gesamten Text in einem Übereinstimmungspuffer aus. Wenn '\ K' unterstützt wird,' \ G' (entspricht dem Anfang einer Zeichenfolge oder dem Ende der vorherigen Übereinstimmung). Es könnte mit einem Muster wie ['(?: \ (| (?! ^) \ G) [^()] *? \ Kc + (? = [^()] * \))'] (Https: //regex101.com/r/lI9hW9/1). –