簡體   English   中英

帶有轉義字符的數據流模板元數據正則表達式定義

[英]Dataflow Template Metadata regex definition with escaped chars

我正在創建一個 Dataflow Flex 模板,我想定義輸入參數,如此處記錄https://cloud.google.com/dataflow/docs/guides/templates/using-flex-templates#metadata

我已經使用以下 JSON 配置了我的模板

{
  "name": "My name",
  "description": "my long description",
  "parameters": [
    {
      "name": "outputTopic",
      "label": "Pub/Sub ingest topic",
      "helpText": "Pub/Sub topic to publish result"
    },
    {
      "name": "bigQueryProject",
      "label": "BigQuery project",
      "helpText": "BigQuery google project"
    },
    {
      "name": "tempLocation",
      "label": "GCS Temp Location",
      "helpText": "GCS Location for storing temporary files",
      "regexes": [
        "gs://.*"
      ]
    },
    {
      "name": "startDate",
      "label": "Start Date",
      "isOptional": true,
      "helpText": "Start date in the format YYYY-MM-DD or use 'YESTERDAY' as default",
      "regexes": [
        "^TODAY$|^YESTERDAY$|^\\d{4}-\\d{2}-\\d{2}$"
      ]
    }
    }

它工作正常,因為如果我使用 Google 控制台,我可以看到正確定義的所有參數

截圖控制台

但是,當我使用所有經過驗證的參數執行作業時,請求因定義的 REGEX 無效而失敗

"(fb57dedae5c9fead): Template metadata contains invalid POSIX regex '^TODAY$|^YESTERDAY$|^\\d{4}-\\d{2}-\\d{2}$': invalid escape sequence: \\d in \\d.

看起來,創建有效的 JSON 文件所需的正則表達式中的雙精度 escaping 沒有被 Dataflow 很好地解釋。 提前致謝

您面臨的錯誤是由於無效的正則表達式。 正如我在評論中提到的,您可以使用\\\\ 、(\\\\d) 解決此問題。

根據我的理解,您需要使用\\\\ ,這將在字符串中生成\\並在 RegEx 中生成\ 。您可以通過使用 RegEx 驗證器來進一步了解這一點。

我認為你的| 沒有按照您的預期進行解釋。

您可以嘗試使用這種格式嗎? 這是我看到經常使用的:

^(TODAY|YESTERDAY|\\d{4}-\\d{2}-\\d{2})$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM