Frage

ein wenig mit dem RegEx stuggling, ich habe 4-Codes in einer Zeichenfolge

CODE4: CODE3: CODE2: CODE1

Jeder Code ist optional abgesehen von CODE1

So konnte ich ab haben: bc: de: fg

oder

bc :: fg

von

ab ::: fg

In jedem Fall des oben CODE1 = fg dnd für das liebe Leben von mir, dass ich nicht die Regex arbeiten kann,

Wäre einfach als Standard-String-Parsing zu tun, aber unforunatly wegen Buisness Objekte in Bedürfnissen über regex :-( getan werden und zurück über ein vb.net RegEX.matche, Gruppen ( „Code1“) fg (I hoffen, dass Sinn)

macht

Vielen Dank im Voraus für jede Hilfe

mit etwas RegEx Ended bis dass der Job nicht, bisschen chaotisch, aber es funktioniert

(^(?<code1>[\w]*)$)|(^(?<code2>[\w]*):(?<code1>[\w]*)$)|(^(?<code3>[\w]*):(?<code2>[\w]*):(?<code1>[\w]*)$)|(^(?<code4>[\w]*):(?<code3>[\w]*):(?<code2>[\w]*):(?<code1>[\w]*)$)

Ta alle

War es hilfreich?

Lösung

Es gibt keine Notwendigkeit, hier einen regulären Ausdruck zu verwenden.

Ich weiß nicht, welche Sprache Sie verwenden, aber teilen Sie die Zeichenfolge auf ‚:‘ und Sie werden eine Reihe von Codes

.

Wenn Sie wirklich wollen einfach nur bestätigen, ob eine Zeichenfolge für diese gilt dann

/(\w*:){0,3}\w+/

entspricht Ihrer Beschreibung und die wenigen Beispiele, die Sie gegeben haben.

Andere Tipps

Ich bin mir nicht sicher, warum Sie die Codes von rechts nach links entsprechen haben. Verwenden Sie einfach einen regulären Ausdruck die Zeichenfolge auseinander zu nehmen:

/(.*):(.*):(.*):(.+)/

und dann haben Sie CODE1 in $ 4, CODE2 in $ 3, CODE3 in $ 2, CODE4 in $ 1.

(CODE1)?:(CODE2)?:(CODE3)?:CODE4 funktionieren würde - wenn die führende: keine Rolle spielen. Andernfalls, wenn Sie nicht führende Doppelpunkte haben kann, aufzuzählen:

(CODE1:(CODE2)?:(CODE3)?:|CODE2:(CODE3)?:|CODE3)?CODE4

Es gibt nichts besonderes über die Tatsache, dass der am weitesten rechts stehende Teil obligatorisch ist, und die am weitesten links gelegenen Teilen nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top