2016-05-06 11 views
0

Ich möchte eine Suche nach einigen Markup und suchen Sie nach einem bestimmten Tag, das ein bestimmtes Attribut nicht enthält.
Wenn das Tag {Mytag} ist und das Attribut fett gedruckt ist, möchte ich das Mytag finden, wo Fett fehlt.Extrahieren Zeichenfolge in Klammern, wenn es keine andere Zeichenfolge enthält

diese finden:
{mytag size = 3}

ignorieren diese:
{mytag bold = "true" size = 3}

+3

Regex ist nicht das beste Werkzeug nicht reguläre Sprachen zum Parsen. – hsz

+0

Welche Art von Markup ist das? Für die meisten Markups stehen robuste Parser zur Verfügung (z. B. HtmlAgilityPak für HTML). –

Antwort

3

Sie könnte so etwas wie tun

{mytag([^}](?!bold=))*} 

Es entspricht Ihrem Tag, und mit negativen Look-Ahead stellen Sie sicher, dass das bold-Tag vor der Endung } angezeigt wird.

See it here at regex101.

Wie Kommentare sagt, ist Regex hier nicht ideal. Angenommen, ein Attribut enthält eine } würde es fehlschlagen. Z.B. {mytag name="abc}def" bold="true"}

Grüße

Verwandte Themen