Regex Multi-Pattern

action_regex_multi · action · Utility · Available · v1.0.0

Description

Estrattore enterprise di dati strutturati da testo non strutturato usando regex con FALLBACK CHAIN — il pattern critical per parsing robusto di pagine HTML/JSON/log/PDF che cambiano formato leggermente nel tempo (cambi di quote single→double, variazioni spacing, ordine random degli attributi). La tipica fragilità del regex singolo che funziona oggi e si rompe domani al primo deploy del publisher viene mitigata permettendo di definire 2-5 pattern alternativi per ogni campo target: il primo regex che matcha vince la priorità, gli altri sono fallback se il primo fallisce. Esempio canonico di estrazione di token da pagina web con fallback chain robusta: pattern 1 token:\\s*"([^"]+)" (formato JS object con virgolette doppie), pattern 2 token:\\s*\'([^\']+)\' (formato JS object con virgolette singole — variant comune per i developer che preferiscono single quote in JavaScript), pattern 3 "token":\\s*"([^"]+)" (formato JSON proper con key tra virgolette come standard RFC), pattern 4 \\btoken\\s*=\\s*([a-z0-9_-]{20,})\\b (formato URL query string o env var assignment senza virgolette per i token di formato Crockford-base32) — questa coverage 4× gestisce praticamente tutti gli scenari real-world dove un publisher potrebbe cambiare il formato del proprio output nel deploy successivo. Transform pipeline opzionale per ogni campo estratto: trim (elimina whitespace leading/trailing), lowercase/uppercase (normalize case per matching downstream), number (cast a numeric con parsing localized "1.234,56" italiano + "1,234.56" inglese), json (parse del valore come JSON nested object), none (raw passthrough senza modifica). Multi-field in singola invocation: l'utente definisce un dictionary di N field → ognuno con la sua fallback chain di regex, e il nodo li estrae tutti in singolo pass del testo (pattern efficiente vs invocare N nodi separati per N field). Cap di sicurezza: max 50 field per invocation, max 10 pattern per field, max 100KB di testo input per evitare regex catastrophic backtracking su input maligno. Output: { extracted: { fieldName1: { value, matchedPatternIndex, transform_applied }, fieldName2: {...}, ... }, totalFieldsExtracted, totalFieldsMissing, durationMs }. Use case: parsing di token JWT/CSRF/session_id da response HTML/JS di API non documentate (workflow di automation che simula login programmatic su sistemi legacy senza API REST disponibili); estrarre prezzo da HTML di e-commerce con multiple quote variants tra mobile/desktop version dello stesso sito; recovery di numero fattura/data fattura/totale da PDF testuale di vendor eterogenei (ogni fornitore ha format leggermente diverso → fallback chain copre tutti); capture pattern specifici da log applicativi per alert SLA (es. error code, response time, customer_id per detection di anomalie + pattern di failure analytics); migration di dati da export legacy text/CSV con format incomerente.

⚙️ Configuration parameters

Fields shown in the editor when configuring the node. Generated directly from the NodeDefconfigFields.

FieldTypeRequiredDefaultDescription
textSource
Sorgente testo
enum
inputexplicit
noinputinput = stringa dal nodo precedente (legge .body, .text, .html, o tutto l'oggetto). explicit = testo qui sotto.
textExplicit
Testo (esplicito)
string (multiline)noTesto statico per testing.
fieldsJson
Pattern map
codeyes
{ "token": { "patterns": [ { "pattern": "token:\\s*\"([^\"]+)\"", "group": 1, "transform": "trim" }, { "pattern": "token:\\s*'([^']+)'", "group": 1 }, { "pattern": "\"token\":\\s*\"([^\"]+)\"", "group": 1 } ], "defaultValue": null }, "videoId": { "patterns": [{ "pattern": "video.id\\s*=\\s*(\\d+)", "group": 1, "transform": "number" }] } }
Map fieldName → {patterns: [...], defaultValue?}. Forma scorciatoia: "key": "regex" (single pattern, flags="i", group=1). Forma estesa: patterns array con {pattern, flags, group, transform}. transform: trim (default) | lowercase | uppercase | number | json | none.

⬆️ Node output

Fields available to downstream nodes via $node.<alias>.json.<field>:

  • fields
  • matched
  • matchedCount
  • totalFields

💡 Configuration example

JSON snippet of the node as it appears in the workflow. Values are derived fromdefaultValue and from required parameters.

{
  "id": "node-action_regex_multi-1",
  "defId": "action_regex_multi",
  "label": "Regex Multi-Pattern",
  "config": {
    "textSource": "input",
    "fieldsJson": "{\n  \"token\": {\n    \"patterns\": [\n      { \"pattern\": \"token:\\\\s*\\\"([^\\\"]+)\\\"\", \"group\": 1, \"transform\": \"trim\" },\n      { \"pattern\": \"token:\\\\s*'([^']+)'\", \"group\": 1 },\n      { \"pattern\": \"\\\"token\\\":\\\\s*\\\"([^\\\"]+)\\\"\", \"group\": 1 }\n    ],\n    \"defaultValue\": null\n  },\n  \"videoId\": {\n    \"patterns\": [{ \"pattern\": \"video.id\\\\s*=\\\\s*(\\\\d+)\", \"group\": 1, \"transform\": \"number\" }]\n  }\n}"
  }
}

🔗 Related nodes in the same category

Ready to use Regex Multi-Pattern?

Available now on all FlowForge plans. Try it free without a credit card.

Start freeBrowse all nodes