2017-02-28 2 views
2

Text:Ignoriert ein bestimmtes Muster (Regex)

Gesamt fällige Betrag (inkl GST $ 7.68.) $ 84,55

Regex:

Total Amount.?\s*(?!\(inc\))?[^\$]*(\$\s?[0-9,]+(\.[0-9]{1,})?) 

https://regex101.com/r/YXr023/1

aber es entspricht der ersten gefundenen Menge $7.68. Wie ignoriere ich alles in Klammern, so dass es stattdessen $84.55 entspricht?

Anhängen (?![^\(]*\)) bis zum Ende ignoriert die Zeile vollständig, die ich nicht will.

+0

Gibt es nur einen Satz von Klammern möglich? Wird es immer eine Nummer außerhalb der Klammern geben? Ist es wichtig, dass Ihre Frage Regex und die Regex in Ihrem Link anders sind? Was ist mit https://regex101.com/r/YXr023/3? Anstatt zu versuchen, alles nicht-gierig zu machen, nur gierige Übereinstimmung bis zum letzten $ ...? – TessellatingHeckler

+0

Ja, nur ein Satz Halterung. Die Beschreibung enthält das Ignorieren des Klammerteils, der nicht funktionierte. Aber deine scheint zu funktionieren! – 3zzy

+0

@TesselingHeckler .. außer wenn die Menge ein paar Zeilen später ist (schlechte OCR). Beispiel: http://pastebin.com/ikL3Jvt0 – 3zzy

Antwort

0

Hope this Post wird Ihnen helfen ..

Regex:(?<!\()\$[\d\.]+(?!.*?\))

1.(?<!\() negativen Blick hinter für (

2.\$[\d\.]+ Spiel Strings wie $10.1000

3.(?!.*?\)) enthält keine weiteren )

Regex Demo

+0

Danke, aber ich extrahiere $ Beträge nicht selbst, ich überprüfe das Label und schaue dann nach vorne, also muss ich meine verwenden Regex, aber ignorieren Sie einfach alles in den Klammern – 3zzy

+0

@ 3zzy Checkout dieses. Ich habe meinen Beitrag bearbeitet. –

+0

Ich benutze diese Regex auf mehreren Dokumenten und nicht nur diese, also scheitert Ihr auf jedem anderen. Danke trotzdem. – 3zzy

Verwandte Themen