2017-02-13 7 views
1

Ich habe die folgende Regex in PHP und anderen Code, der einen guten Job macht.Golang Regex - konvertieren von Lookahead

/^(?:(?=[^ ]+\d)(?:[A-Z0-9]+))|(?:[A-Z0-9]+) +?(?=.*\d)(?:[A-Z0-9]+)? 

Regular expression visualization

Debuggex Demo

Es stellt sich heraus, dass Go nicht lookheads unterstützt und ich bin ratlos, wie es über zu konvertieren.

Der Debuggex-Link enthält einige Testdaten, die ich zur Qualifizierung des Codes verwendet habe.

+1

Wenn Sie * genaue * Spezifikationen für den regulären Ausdruck angeben könnten, wäre es einfacher, Ihnen zu helfen. Im Moment ist es nicht klar, ob Sie die Ziffer als Teil des Matches benötigen oder ob sie nur nach dem erwarteten Match sein müssen. –

Antwort

1

Erstens, die linke Seite der Alternation /^... entspricht nichts, weil / niemals vor dem Start des Eingangs erscheinen kann.

Das ist nur (?:[A-Z0-9]+) +?(?=.*\d) Blätter, die wie folgt ausgedrückt werden kann:

((?:[A-Z0-9]+)).*\d.* 

Der Begriff " +?" wie ist identisch in der Tat nur " ".

Beachten Sie jedoch, dass dies mehr Input als das Original verbraucht, was unvermeidlich ist. Ihre ursprüngliche Übereinstimmung ist jetzt in Gruppe 1.

Verwandte Themen