regex op validatietekst in pdf

Status
Niet open voor verdere reacties.

spoelstra

Gebruiker
Lid geworden
8 feb 2016
Berichten
36
Hallo,

Ben sinds kort aan het oefenen met reguliere expressies. Lukt aardit maar loop tegen ene probleem aan en weet eigenlijk niet of onderstaande mogelijk is.

Doormiddel van OCR wordt een pdf uitgelezen in raw tekst en op basis van deze tekst ga ik een template maken voor deze pdf(facturen) en wil deze uitlezen maar de regex moet dit als validatie afregelen .

Ik lees drie kolommen uit met tekst artikelcode- aantal -eenheid
11282 10 10 liter
11282 5 15 liter

Nu wil ik dat als ik deze drie kolommen in een kader zet een regex maken die uitsluitend afgeeft de artikelcode en eenheid

Deze beiden vormen namelijk een unieke code en die gebruik ik verderop ergens voor een koppeling.

Ik probeer via regex101 een regel te bedenken die dit kan maar lukt mij niet.

Het artikelcode bestaat altijd uit cijfers en 5 posities dus ^\d{5}

Dan zou er een stukje achter moeten komen die het aantal uitleest \d{1,9} maar dit er ook weer uitknipt

en als laatste iets als : \d{2}[liter]¤


Vraag: kan iemand mij een werkende regex laten zien die onderstaande uit bovenstaande tekst kan opleveren?

artikelcode eenheid
11282 10 liter
11282 15 liter

Alvast bedankt,

Jaap
 
Het uithalen van data doe je met haken (). als alternatief voor \d werkt [0-9] soms beter afhankelijk van de situatie.

^(\d{5}) [0-9]+ ([0-9]+) liter

zoiets. even uit de losse pols, dus mogelijk een bugje erin, maar zo kun je 2 groepen data eruit halen
 
Hallo Wampier,

Blijft toch lastig om het in een regex te schrijven.


Had een simple voorbeeld geplaatst maar in werkelijkheid is de kolom aantal (die eigenlijk niet moet moeten opgenomen) in de output. in 2 decimal weergegeven . Ik had 10 als voorbeeld genoemd maar het is geschreven als 10.00 . Moet er nu nog wat bij geschreven worden??

Hoor graag je reactie,

Jaap
 
In vbscript
Code:
Public Sub RegExp()
    raw = "  11282  5  15.00  liter "
    With CreateObject("vbscript.regexp")
        .Global = True
        .Ignorecase = True
        .Pattern = "(\d+\.?\d*)"
        Set vals = .Execute(raw)
        .Pattern = "(\b[A-Z]+\b)"
        Set units = .Execute(raw)
    End With
End Sub
 
Hallo Alphamax,


In onze software kan ik de tekst uitsluitend bewerken door bij de pattern een regex in te vullen.

Deze zou het dan af moeten regelen zoals eerder omschreven. Is dat mogelijk?



Jaap
 
Ik kan je niet verder helpen, regex ben ik ook niet meester.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan