Přeskočit obsah

Výrazy pro analýzu¤

Přehled¤

Výrazy pro analýzu jsou funkce pro analýzu určité sekvence znaků.

Základní analyzátory mohou rozlišovat mezi číslicemi, písmeny a mezerami:

Následující výrazy se používají pro analýzu znaků z vlastního souboru znaků a hledání specifických znaků v vstupních řetězcích:

Následující výrazy se používají pro analýzu dat a časů v různých formátech:

  • !PARSE.DATETIME: Analyzovat datum a čas.
  • !PARSE.MONTH: Analyzovat měsíc v různých formátech.
  • !PARSE.FRAC: Analyzovat desetinná čísla (což je užitečné pro analýzu mikrosekund).

Následující výrazy se používají pro analýzu specifických typů řetězců:

Následující výrazy se používají pro analýzu strukturovaných dat key-value:

  • !PARSE.CEFKV: Analyzovat dvojice klíč-hodnota ve formátu CEF (Common Event Format).
  • !PARSE.FIELDS: Analyzovat více polí oddělených určitým znakem.

!PARSE.DIGIT¤

Analyzovat jednu číslici.

Typ: Analyzátor.

Synopse:

!PARSE.DIGIT

Example

Vstupní řetězec: 2

!PARSE.DIGIT

!PARSE.DIGITS¤

Analyzovat sekvenci číslic.

Typ: Analyzátor.

Synopse:

!PARSE.DIGITS
min: <...>
max: <...>
exactly: <...>
  • exactly určuje přesný počet číslic k analýze.
  • min a max určují minimální a maximální počet číslic k analýze. Nemohou být kombinovány s parametrem exactly.
  • Pokud není uvedeno žádné z polí min, max a exactly, analyzuje se co nejvíce číslic. Výchozí minimum je 1.

Warning

Pole exactly nelze použít společně s poli min nebo max. A samozřejmě hodnota max nemůže být menší než hodnota min.

Example

Vstupní řetězec: 123

!PARSE.DIGITS
max: 4
Více příkladů Analyzovat co nejvíce číslic:
!PARSE.DIGITS
Analyzovat přesně 3 číslice:
!PARSE.DIGITS
exactly: 3
Analyzovat alespoň 2 číslice, ale ne více než 4:
!PARSE.DIGITS
min: 2
max: 4

!PARSE.LETTER¤

Analyzovat jedno písmeno.

Pod písmeny máme na mysli latinská písmena od A do Z, jak velká, tak malá.

Typ: Analyzátor.

Synopse:

!PARSE.LETTER

Example

Vstupní řetězec: A

!PARSE.LETTER

!PARSE.LETTERS¤

Analyzovat sekvenci písmen.

Pod písmeny máme na mysli latinská písmena od A do Z, jak velká, tak malá.

Typ: Analyzátor.

Synopse:

!PARSE.LETTERS
min: <...>
max: <...>
exactly: <...>

Pole min, max a exactly jsou volitelná. Pokud není uvedeno min, výchozí minimum je 1.

Warning

Pole exactly nelze použít společně s poli min nebo max. A samozřejmě hodnota max nemůže být menší než hodnota min.

Example

Vstupní řetězec: cat

!PARSE.LETTERS
max: 4
Více příkladů Analyzovat co nejvíce písmen:
!PARSE.LETTERS
Analyzovat přesně 3 písmena:
!PARSE.LETTERS
exactly: 3
Analyzovat alespoň 2 písmena, ale ne více než 4:
!PARSE.LETTERS
min: 2
max: 4

!PARSE.SPACE¤

Analyzovat jeden znak pro mezeru.

Typ: Analyzátor.

Synopse:

!PARSE.SPACE

!PARSE.SPACES¤

Analyzovat sekvenci znaků pro mezeru.

Analyzovat co nejvíce znaků pro mezeru:

Typ: Analyzátor.

Synopse:

!PARSE.SPACES

!PARSE.CHAR¤

Analyzovat jeden znak jakéhokoli typu.

Typ: Analyzátor.

Synopse:

!PARSE.CHAR

Example

Vstupní řetězec: @

!PARSE.CHAR

!PARSE.CHARS¤

Analyzovat sekvenci znaků.

Typ: Analyzátor.

Synopse:

!PARSE.CHARS
min: <...>
max: <...>
exactly: <...>

Pole min, max a exactly jsou volitelná. Pokud není uvedeno min, výchozí minimum je 1.

Warning

Pole exactly nelze použít společně s poli min nebo max. A samozřejmě hodnota max nemůže být menší než hodnota min.

Example

Vstupní řetězec:_ name@123_

!PARSE.CHARS
max: 8

Tip

Použijte !PARSE.CHARS s výchozími nastaveními pro analýzu až do konce řetězce.

Více příkladů Analyzovat co nejvíce znaků:
!PARSE.CHARS
Analyzovat přesně 3 znaky:
!PARSE.CHARS
exactly: 3
Analyzovat alespoň 2 znaky, ale ne více než 4:
!PARSE.CHARS
min: 2
max: 4

!PARSE.EOF¤

Ověří, že bylo dosaženo konce vstupního řetězce.

Typ: Analyzátor.

Synopse:

!PARSE.EOF

Analyzátor uspěje pouze tehdy, když je aktuální pozice analýzy na konci vstupního řetězce.

Example

Vstupní řetězec: abc

!PARSE.KVLIST
- 'abc'
- !PARSE.EOF

!PARSE.EXACTLY¤

Analyzovat přesně definovanou sekvenci znaků.

Typ: Analyzátor.

Synopse:

!PARSE.EXACTLY
what: <...>

nebo kratší verze:

!PARSE.EXACTLY <...>

Example

Vstupní řetězec:_Hello world!

!PARSE.EXACTLY
what: "Hello"

!PARSE.UNTIL¤

Analyzovat sekvenci znaků, dokud není nalezen specifický znak.

Typ: Analyzátor.

Synopse:

!PARSE.UNTIL
what: <...>
stop: <before/after>
eof: <true/false>

nebo kratší verze:

!PARSE.UNTIL <...>
  • what: Určuje jeden (a pouze jeden) znak, který se má hledat v vstupním řetězci.

  • stop: Určuje, zda by měl být zastavovací znak analyzován nebo ne. Možné hodnoty: before nebo after (výchozí).

  • eof: Určuje, zda bychom měli analyzovat až do konce řetězce, pokud symbol what není nalezen. Možné hodnoty: true nebo false (výchozí).

  • escape: Určuje únikový znak.

Info

Pole what musí být jediný znak. Ale některé znaky pro mezeru mohou být také použity, jako například tab. Pro hledání sekvence znaků viz výraz !PARSE.CHARS.LOOKAHEAD.

Example

Vstupní řetězec: 60290:11

!PARSE.UNTIL
what: ":"
Více příkladů Analyzovat do : symbolu a zastavit se před ním:
!PARSE.UNTIL
what: ":"
stop: "before"
Analyzovat do symbolu mezery a zastavit se po něm:
!PARSE.UNTIL ' '
Analyzovat do , symbolu nebo analyzovat až do konce řetězce, pokud není nalezen:
!PARSE.UNTIL
what: ","
eof: true
Analyzovat do tab symbolu:
!PARSE.UNTIL
what: 'tab'
Analyzovat do svislé čáry, uniknout interní svislé čáry:
Vstupní řetězec:CRED_REFR\|success\|fail|
!PARSE.UNTIL
what: '|'
escape: '\'

!PARSE.BETWEEN¤

Analyzovat sekvenci znaků mezi dvěma specifickými znaky.

Typ: Analyzátor.

Synopse:

!PARSE.BETWEEN
what: <...>
start: <...>
stop: <...>
escape: <...>

nebo kratší verze:

!PARSE.BETWEEN <...>
  • what - určuje mezi kterými stejnými znaky bychom měli analyzovat.

  • start, stop - určuje mezi kterými různými znaky bychom měli analyzovat.

  • escape - určuje únikový znak.

Example

Vstupní řetězec:_ [10/May/2023:08:15:54 +0000]

!PARSE.BETWEEN
start: '['
stop: ']'
Více příkladů Analyzovat mezi dvojitými uvozovkami:
!PARSE.BETWEEN
what: '"'
Analyzovat mezi dvojitými uvozovkami, krátká forma:
!PARSE.BETWEEN '"'
Analyzovat mezi dvojitými uvozovkami, uniknout interním dvojitým uvozovkám:
Vstupní řetězec:"one, \"two\", three"
!PARSE.BETWEEN
what: '"'
escape: '\'

!PARSE.ONEOF¤

Analyzovat jeden znak z vybraného souboru znaků.

Typ: Analyzátor.

Synopse:

!PARSE.ONEOF
what: <...>
nebo kratší verze:
!PARSE.ONEOF <...>

Example

Vstupní řetězce:

process finished with status 0
process finished with status 1
process finished with status x
!PARSE.KVLIST
- "process finished with status "
- !PARSE.ONEOF
what: "01x"

!PARSE.NONEOF¤

Analyzovat jeden znak, který není ve vybraném souboru znaků.

Typ: Analyzátor.

Synopse:

!PARSE.NONEOF
what: <...>

nebo kratší verze:

!PARSE.NONEOF <...>

Example

Vstupní řetězec:_ Wow!

!PARSE.NONEOF
what: ",;:[]()"

!PARSE.REGEX¤

Analyzovat sekvenci znaků, která odpovídá regulárnímu výrazu.

Typ: Analyzátor.

Synopse:

!PARSE.REGEX
what: <...>

Example

Vstupní řetězec:_ FTVW23_L-C: Message...

Výstup: FTVW23_L-C

!PARSE.REGEX
what: '[a-zA-Z0-9_\-0]+'

!PARSE.DATETIME¤

Analyzovat datum a čas.

Typ: Analyzátor.

Synopse:

!PARSE.DATETIME
- year: <...>
- month: <...>
- day: <...>
- hour: <...>
- minute: <...>
- second: <...>
- microsecond: <...>
- nanosecond: <...>
- timezone: <...>
- period: <...>
  • Pole month a day jsou povinná.
  • Pole year je volitelné. Pokud není uvedeno, bude použita funkce smart year. Podporovány jsou jak 2, tak 4-místná čísla.
  • Pole hour, minute, second, microsecond, nanosecond jsou volitelná. Pokud nejsou uvedena, bude použita výchozí hodnota 0.
  • Uvedení pole mikrosekund jako microsecond? umožňuje analyzovat mikrosekundy nebo ne, v závislosti na jejich přítomnosti ve vstupním řetězci.
  • Pole timezone je volitelné. Pokud není uvedeno, bude použita výchozí hodnota UTC. Přečtěte si více o analýze časových pásem zde.
  • Pole period je volitelné. Pokud není uvedeno, použije se 24hodinový formát. Hodnota období (AM/PM) nerozlišuje velikost písmen.

Běžné formáty datumu a času

Použijte Zkratky pro analýzu formátů datumu a času RFC 3339, RFC 3164 a ISO 8601.

UNIX čas

Pro analýzu datumu a času v UNIX čase použijte !PARSE.DATETIME EPOCH.

Tip

Použijte !PARSE.MONTH pro analýzu měsíce.

Tip

Použijte !PARSE.FRAC pro analýzu mikrosekund a nanosekund. Všimněte si, že tento výraz spotřebovává . a , také. Nezpracovávejte je odděleně.

Example

Vstupní řetězec: 2022-10-13T12:34:56.987654

!PARSE.DATETIME
- year: !PARSE.DIGITS
- '-'
- month: !PARSE.MONTH 'number'
- '-'
- day: !PARSE.DIGITS
- 'T'
- hour: !PARSE.DIGITS
- ':'
- minute: !PARSE.DIGITS
- ':'
- second: !PARSE.DIGITS
- microsecond: !PARSE.FRAC
        base: "micro"
Dvou-místný rok

Analyzovat datum a čas s dvou-místným rokem:

Vstupní řetězec: 22-10-13T12:34:56.987654

!PARSE.DATETIME
- year: !PARSE.DIGITS
- '-'
- month: !PARSE.MONTH "number"
- '-'
- day: !PARSE.DIGITS
- 'T'
- hour: !PARSE.DIGITS
- ':'
- minute: !PARSE.DIGITS
- ':'
- second: !PARSE.DIGITS
- microsecond: !PARSE.FRAC
            base: micro
Bez roku, volitelné mikrosekundy

Analyzovat datum a čas bez roku, se zkráceným názvem měsíce a volitelnými mikrosekundami:

Vstupní řetězce:

Aug 17 12:00:00
Aug 17 12:00:00.123
Aug 17 12:00:00.123456
!PARSE.DATETIME
# Ve vstupním řetězci není rok, použije se funkce smart year.
- month: !PARSE.MONTH 'short'
- !PARSE.SPACE
- day: !PARSE.DIGITS
- !PARSE.SPACE
- hour: !PARSE.DIGITS
- ":"
- minute: !PARSE.DIGITS
- ":"
- second: !PARSE.DIGITS
- microsecond?: !PARSE.FRAC
                base: "micro"
                max: 6

V tomto případě je year určen automaticky funkcí smart year, což v praxi znamená použití aktuálního roku.

Milisekundy

Analyzovat datum a čas s milisekundami:

Vstupní řetězec: 2023-03-23T07:00:00.734

!PARSE.DATETIME
- year: !PARSE.DIGITS
- "-"
- month: !PARSE.DIGITS
- "-"
- day: !PARSE.DIGITS
- "T"
- hour: !PARSE.DIGITS
- ":"
- minute: !PARSE.DIGITS
- ":"
- second: !PARSE.DIGITS
- microsecond: !PARSE.FRAC
            base: milli
            max: 3
Nanosekundy

Analyzovat datum a čas s nanosekundami:

Vstupní řetězec: 2023-03-23T07:00:00.734323900

!PARSE.DATETIME
- year: !PARSE.DIGITS
- "-"
- month: !PARSE.DIGITS
- "-"
- day: !PARSE.DIGITS
- "T"
- hour: !PARSE.DIGITS
- ":"
- minute: !PARSE.DIGITS
- ":"
- second: !PARSE.DIGITS
- nanosecond: !PARSE.FRAC
            base: "nano"
            max: 9
Období (AM/PM)

Analyzovat datum a čas s obdobím (AM/PM):

Vstupní řetězec: 7/24/2025 4:27:44 AM

!PARSE.DATETIME
- month: !PARSE.MONTH "number"
- "/"
- day: !PARSE.DIGITS
- "/"
- year: !PARSE.DIGITS
- !PARSE.SPACE
- hour: !PARSE.DIGITS
- ":"
- minute: !PARSE.DIGITS
- ":"
- second: !PARSE.DIGITS
- !PARSE.SPACE
- period: !PARSE.CHARS

Časové pásmo¤

Časové pásmo může být uvedeno v logu, nebo může chybět. Existují dva přístupy:

  1. Časové pásmo se parsuje ze vstupního řetězce. V tom případě použijte vhodný parsovací výraz pro část s časovým pásmem.

    !PARSE.DATETIME
    - ...
    - timezone: !PARSE.UNTIL " "
    

    Povolené formáty časových pásem: Z, UTC, CET, CEST, +02:00, -0600.

  2. Časové pásmo je pevně dané. V tom případě ho zadejte jako IANA časové pásmo.

    !PARSE.DATETIME
    - ...
    - timezone: "Europe/Prague"
    

    To je užitečné, když časové pásmo v logu chybí nebo je uvedeno nesprávně.

Časové pásmo ze vstupu

Analyzovat datum a čas, které ve vstupním řetězci obsahují časové pásmo.

Vstupní řetězce:

2024-04-15T12:00:00+04:00 ...(další obsah logu)
2024-04-15T12:00:00-02:00 ...
2024-04-15T12:00:00Z ...
!PARSE.DATETIME
- year: !PARSE.DIGITS
- '-'
- month: !PARSE.MONTH 'number'
- '-'
- day: !PARSE.DIGITS
- 'T'
- hour: !PARSE.DIGITS
- ':'
- minute: !PARSE.DIGITS
- ':'
- second: !PARSE.DIGITS
- timezone: !PARSE.UNTIL " "

Vstupní řetězce:

2024-04-15T12:00:00 CET ...(další obsah logu)
2024-04-15T12:00:00 UTC ...
!PARSE.DATETIME
- year: !PARSE.DIGITS
- '-'
- month: !PARSE.MONTH 'number'
- '-'
- day: !PARSE.DIGITS
- 'T'
- hour: !PARSE.DIGITS
- ':'
- minute: !PARSE.DIGITS
- ':'
- second: !PARSE.DIGITS
- !PARSE.SPACE
- timezone: !PARSE.UNTIL " "

Smart year¤

Funkce smart year odhaduje úplný rok z uvedeného měsíce s ohledem na aktuální rok a měsíc, aby určila nejpravděpodobnější čtyřmístný rok.

Zkratky¤

Podporované zkrácené formy (malá i velká písmena):

ISO 8601¤

!PARSE.DATETIME ISO8601

Tento výraz parsuje datum a čas podle ISO 8601. Časové pásmo může být parsováno ze vstupního řetězce, nebo pokud chybí, může být nastaveno v konfiguraci lmio-parsec.

Příklady datumů a časů, které lze parsovat pomocí zkratky:

2024-04-12T10:16:21Z
20240412T101621Z
2024-12-11T11:17:21.123456+00:00
2024-04-12T03:16:21−07:00
2024-04-12T03:16:21

RFC 3339¤

!PARSE.DATETIME RFC3339

Tento výraz parsuje datum a čas podle RFC 3339. Časové pásmo je vždy parsováno ze vstupního řetězce.

Příklady datumů a časů, které lze parsovat pomocí zkratky:

1985-04-12T23:20:50.52Z
1996-12-19T16:39:57-08:00
2021-06-29 16:51:43.987654+02:00

RFC 3164¤

!PARSE.DATETIME RFC3164

Tento výraz parsuje datum a čas podle RFC 3164. Rok je určen funkcí smart year. Časové pásmo musí být nastaveno v konfiguraci LogMan.io Parsec, jinak se považuje za UTC.

Příklady datumů a časů, které lze parsovat pomocí zkratky:

Apr 24 15:25:20
Oct  3 20:33:02
AUG  4 10:20:20

Epoch¤

!PARSE.DATETIME EPOCH
!PARSE.DATETIME epoch

Tento výraz parsuje datum a čas podle Unix time. Umožňuje parsovat různé reprezentace Unix času, například sekundy, milisekundy, mikrosekundy a sekundy s desetinnou částí mikro/milisekund.

Příklady datumů a časů, které lze parsovat pomocí zkratky:

1731410205 - sekundy
1727951634.687 - sekundy s desetinnou částí mikrosekund
1728564383160 - milisekundy

!PARSE.MONTH¤

Analyzuje měsíc.

Typ: Analyzátor.

Synopse:

!PARSE.MONTH
what: <...>

nebo kratší verze:

!PARSE.MONTH <...>

Parametr what určuje formát názvu měsíce. Možné hodnoty:

  • number: číselná reprezentace, např. 01 pro leden, 12 pro prosinec
  • short: třípísmenná reprezentace, např. Jan pro leden, Dec pro prosinec
  • full: plný název, např. January, December

Tip

Použijte !PARSE.MONTH pro analýzu měsíce jako součásti !PARSE.DATETIME.

Example

Vstupní řetězec: 10/Jan/2023:08:15:54

!PARSE.MONTH 'short'

Vstupní řetězec: 10/01/2023:08:15:54

!PARSE.MONTH 'number'

Vstupní řetězec: 10/January/2023:08:15:54

!PARSE.MONTH 'full'

!PARSE.FRAC¤

Analyzuje desetinnou část.

Warn

Parsování desetinné části zahrnuje i tečku (.) a čárku (,) jako oddělovač.

Typ: Analyzátor.

Synopse:

!PARSE.FRAC
base: <...>
max: <...>
  • base: Základ desetinné části. Možné hodnoty:

    • milli pro základ 10^-3
    • micro pro základ 10^-6
    • nano pro základ 10^-9
  • max: Maximální počet číslic podle hodnoty base. Pokud parametr max není uveden, použijí se výchozí hodnoty 3, 6, 9.

Tip

Použijte !PARSE.FRAC pro analýzu mikrosekund nebo nanosekund jako součásti !PARSE.DATETIME.

Example

Vstupní řetězce:

Aug 22 05:40:14.264
Aug 22 05:40:14.264023
!PARSE.FRAC
base: "micro"

nebo plná forma:

!PARSE.FRAC
base: "micro"
max: 6

!PARSE.IP¤

Analyzuje IP adresu ve formátu IPv4 i IPv6.

Vrací číselnou reprezentaci IP adresy.

Typ: Analyzátor.

Synopse:

!PARSE.IP

Example

Vstupní řetězec: 193.178.72.2

!PARSE.IP

!PARSE.MAC¤

Analyzuje MAC adresu v jednom z těchto formátů:

  • XX:XX:XX:XX:XX:XX — oddělené dvojtečkami
  • XX-XX-XX-XX-XX-XX — oddělené pomlčkami
  • XXXX.XXXX.XXXX — oddělené tečkami (Cisco styl)
  • 0xXXXXXXXXXXXX — hex kódování

Vrací číselnou reprezentaci MAC adresy.

Typ: Analyzátor.

Synopse:

!PARSE.MAC

Example

Vstupní řetězec: 4d:3b:4c:bc:e5:6d

!PARSE.MAC

!PARSE.CEFKV¤

Analyzuje záznamy ve formátu CEF (Common Event Format) key-value a extrahuje strukturovaná pole ze vstupního řetězce.

Každé pole má formát key=value, = je pevný oddělovač a jednotlivé dvojice jsou odděleny jednou mezerou.

Výraz správně zpracuje hodnoty obsahující mezery, pokud jsou jednotlivé dvojice klíč-hodnota správně formátované.

Pole extrahovaná pomocí !PARSE.CEFKV odpovídají polím definovaným v referenci CEF standardu. Úplný seznam podporovaných polí a detailní specifikace formátu najdete v oficiální dokumentaci:

Implementing ArcSight Common Event Format (CEF) - Version 26

Typ: Analyzátor.

Synopse:

!PARSE.CEFKV
custom_to_kv: <true/false>
  • custom_to_kv je nepovinné (výchozí: false). Pokud je true, vlastní CEF label pole (cs1Label, cn2Label a podobně) se převedou na běžné dvojice klíč-hodnota.

Example

Vstupní řetězec: start=1731934886000 end=1731934886000 ahost=aac-ax-01 agt=192.168.57.141 agentZoneURI=/All Zones/ArcSight System IPv4/Private Address Space Zones/RFC1918: 192.168.0.0-192.168.255.255 amac=00-50-56-8C-85-D4 av=8.4.6.9408.1 atz=Europe/Prague at=syslog dvchost=pfsense1data.local dvc=192.168.51.2 dtz=Europe/Prague geid=3293577591578960401 parserVersion= parserIdentifier= _cefVer=1.0

!PARSE.CEFKV

Výstup:

[
    ('start', '1731934886000'),
    ('end', '1731934886000'),
    ('ahost', 'aac-ax-01'),
    ('agt', '192.168.57.141'),
    ('agentZoneURI', '/All Zones/ArcSight System IPv4/Private Address Space Zones/RFC1918: 192.168.0.0-192.168.255.255'),
    ('amac', '00-50-56-8C-85-D4'),
    ('av', '8.4.6.9408.1'),
    ('atz', 'Europe/Prague'),
    ('at', 'syslog'),
    ('dvchost', 'pfsense1data.local'),
    ('dvc', '192.168.51.2'),
    ('dtz', 'Europe/Prague'),
    ('geid', '3293577591578960401'),
    ('parserVersion', ''),
    ('parserIdentifier', ''),
    ('_cefVer', '1.0')
]

!PARSE.FIELDS¤

Analyzuje více polí oddělených určitým znakem a volitelně uzavřených v oddělovačích, které se při parsování odstraní. Každé pole se přiřadí odpovídajícímu klíči ze seznamu keys.

Pokud je zadán parametr stop, parsuje se přesně tolik polí, kolik je klíčů. Poslední pole se čte až do znaku stop. Parser se zastaví před znakem stop.

Parsování selže, pokud počet polí neodpovídá počtu klíčů.

Typ: Analyzátor.

Synopse:

!PARSE.FIELDS
keys: <...>
separator: <...>
delimiters: <...>
empty: <...>
stop: <...>
  • keys je seznam názvů polí extrahovaných ze vstupního řetězce.
  • separator je znak oddělující pole.
  • delimiters je seznam znaků nebo dvojic znaků, které mohou pole obalovat.
  • stop je nepovinný znak konce posledního pole.
  • empty je nepovinný boolean (výchozí: false), který odstraní prázdná pole z výstupu.

Example

Vstupní řetězec: <8>,url,,"2024/12/09 19:45:31",99.70.55.200

!PARSE.FIELDS
keys:
  - pri
  - subtype
  - future_use
  - time_generated
  - src_ip
separator: ","
delimiters:
  - '"'  # Jeden znak znamená stejný začátek a konec
  - "'"
  - ['<', '>']  # Různý začátek a konec
  - '"""'

Výstup:

[
  ('pri', '8'),
  ('subtype', 'url'),
  ('future_use', ''),
  ('time_generated', '2024/12/09 19:45:31'),
  ('src_ip', '99.70.55.200'),
]
Parsování s odstraněním prázdných polí

Vstupní řetězec: <8>,url,,"2024/12/09 19:45:31",99.70.55.200

!PARSE.FIELDS
keys:
  - pri
  - subtype
  - future_use
  - time_generated
  - src_ip
separator: ","
delimiters:
  - '"'
  - "'"
  - ['<', '>']
  - '"""'
empty: true

Výstup:

[
  ('pri', '8'),
  ('subtype', 'url'),
  ('time_generated', '2024/12/09 19:45:31'),
  ('src_ip', '99.70.55.200'),
]
Parsování přesného počtu polí (poslední pole do znaku stop)

Vstupní řetězec: 52228,1,,123,info@mail.uipath.com some extra text

!PARSE.FIELDS
keys:
  - field1
  - field2
  - field3
  - field4
  - field5
separator: ","
delimiters:
  - '"'
  - "'"
  - ['<', '>']
  - '"""'
stop: " "

Výstup:

[
  ('field1', '52228'),
  ('field2', '1'),
  ('field3', ''),
  ('field4', '123'),
  ('field5', 'info@mail.uipath.com'),
]