Spring til indhold
Menu

Artikler

Sådan udtrækker du data med RegEx i UiPath

RegEx er en tegnsekvens, der definerer et søgemønster. Som UiPath RPA-udvikler bruger vi RegEx til at udtrække data fra fx mails og fakturaer. Sådan gør du.

Anders Jensen Automatiserings- og AI-instruktør

Hvad er RegEx

RegEx (kort for Regular Expressions) er en kort kodesekvens (tegn), der definerer et søgemønster. Søgemønstret bruges til at lede efter bestemte data i fx en mail.

Fig. 1.1 viser en online RegEx-tester. Jeg har indsat teksten (strengen) fra en faktura. Lige ovenover finder du udtryks-editoren. Skærmhjælpen er til højre og er meget værdifuld, når du lærer RegEx.

Test

Mit RegEx-mønster til denne opgave ser sådan ud:

(?<=Invoice Number ).*

Mønstret udtrækker alt efter "Invoice Number " og giver mig fakturanummeret: "2021-001" (markeret med blåt).

RegEx i UiPath

RegEx-dataudtræk i UiPath er nemt. Udtrækket kan laves med den indbyggede activity (Matches) eller direkte med VB.NET-kode.

Brug Matches-activityen

Læs din tekst ind i en variabel af typen String. Her (Fig. 1.2) kommer mine data fx fra PDF'en "Invoice".

Når du har trukket "Matches" ind fra Activities, så sørg for, at den er lyseblå (klik på den, hvis ikke).

Fig. 1.2: Matches-activityen i UiPath

Udfyld følgende under Properties:

Input:
Her bruger jeg strengen fra 'Read PDF Text'-activityen.

Pattern:
Brug et RegEx-mønster. For at få fakturanummeret kan vi bruge:

(?<=Invoice Number ).*

Result:
Klik med musen i Result (under Misc), og tryk derefter Ctrl+K; det opretter en ny variabel af typen IEnumerable of Matches. Giv den et navn, før du gør andet. Jeg kalder min ienMatches (men kald den, hvad du vil). Du kan se en IEnumerable som en liste med 0 eller flere elementer. Her indeholder den vores matches, hvis der er nogen.

Træk en Write Line ind, og skriv output-variablen fra Matches-activityen. Fordi det er en IEnumerable, altså en liste/samling, angiver vi 0 i parentes bagefter for at få det første match. I en "rigtig" robot skriver vi resultatet til et Excel-ark, en database eller et system, men en Write Line er perfekt til test og læring.

Prøv at køre dit workflow. I Output har du nu dit fakturanummer (se Fig. 1.3).

Fig. 1.3: Output fra vores RegEx/Matches-workflow

Brug en Assign

De indbyggede activities 'Matches' og 'Is Match' er ofte nyttige. Men der findes en langt enklere løsning (i hvert fald i mange tilfælde) til at udtrække data fra tekst med RegEx i UiPath.

Tag følgende tekst: "Amount due $2,000.00, please pay before 04/24/2020", hvor formatet altid er det samme, men beløbet ændrer sig. Vi vil udtrække og gemme beløbet i en streng, altså "2,000.00".

Fig. 2.1: Hele workflowet, der udtrækker beløbet fra input-strengen

Opret variabler

Opret først de to variabler i variabel-manageren:

  • 'strInput', en streng hvor vi gemmer vores input
  • 'strOutut', en streng til værdien af det udtrukne beløb

Brug RegEx til at give output-strengen en værdi

Træk en 'Assign'-activity ind (Fig. 2.2), sæt venstre side til 'strInput' og højre side til:

System.Text.RegularExpressions.Regex.Match(strInput, "(?<=\$)(\d+,?)+(\.\d+)").Value
Fig. 2.2: En Assign til vores RegEx

Lad os dykke ned i udtrykket på højre side:

  • System.Text.RegularExpressions er Microsoft .NET-namespacet
  • Regex.Match er metoden (beskrevet her: https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.match?view=netframework-4.8)
  • strInput er strengen, vi søger i
  • “(?<=\$)(\d+,?)+(.\d+)” er RegEx-mønstret, vi bruger til at udtrække beløbet
    • (?<=\$) er et positivt lookbehind, hvor vi angiver, at vi vil kigge bag et '$'
    • (\d+,?) derefter leder vi efter et eller flere cifre (\d+) og nul eller én tusindtalsseparator
    • + en eller flere af de foregående mønstre (ellers ville det stoppe efter '2,')
    • (\.\d+) en decimalseparator (\.) og et eller flere cifre (\d+)

Skriv outputtet ud

Træk nu bare en 'Write Line' ind, og sæt værdien til vores output-variabel, 'strOutput' (Fig. 2.3).

Fig. 2.3: Skriv outputtet ud

Og så er vi færdige (Fig. 2.4). Workflowet virker også med alle andre værdier.

Fig. 2.4: Vores udtrukne værdi

Mere RegEx-materiale

Flere artikler

  • UiPath Orchestrator - komplet guide [2021]

    Komplet guide til UiPath Orchestrator: forbind din robot, publicér pakker, opret processer, kør jobs, planlæg triggers og håndtér queues og assets.

    Læs mere →
  • Sådan skriver du i applikationer og web med UiPath (Type Into)

    Lær alt om Type Into-activityen i UiPath: simulér tastetryk, send window messages, håndtér specialtaster og vælg den rigtige input-metode.

    Læs mere →
  • UiPath - Excel vs Workbook activities

    Når du arbejder med Excel i UiPath, kan du bruge Excel- eller Workbook-activities. Her er fordele og ulemper, så du kan vælge den rigtige til din robot.

    Læs mere →