IBM Cloud Docs
使用正则表达式来查找术语

使用正则表达式来查找术语

定义用于捕获显着性模式的正则表达式,例如,AB10045 是用于订单编号的语法。

定义可以从集合中的字段标识和抽取信息的正则表达式。

例如,此正则表达式查找出现的特定格式和长度的信用卡卡号。

4[0-9]{15}

以下正则表达式查找出现的美国社会保险号。

(?!666|000|9\d{2})\d{3}-(?!00)\d{2}-(?!0{4})\d{4}

要添加正则表达式,请完成以下步骤:

  1. 从“改进工具”面板的 Teach 域概念 部分中,选择 正则表达式

  2. 单击上传

  3. 可选: 指定构面路径以分类与正则表达式匹配的任何文本。 该文本稍后可由此构面进行过滤。

    如果使用类别层次结构,请在构面路径中的类别名称之间添加句点以表示层次结构。 例如,如果要添加可识别电话号码的正则表达式,那么可能具有诸如 international.europe 的构面路径。

  4. 添加正则表达式。

    • 使用 Java™ 正则表达式。

      更多信息,请参阅 Java 文档。 另一个有用的资源是 Regex 101

    • 保持正则表达式尽可能简短易懂。

    • 最佳正则表达式可快速解析为匹配或不匹配。

    • 使用公共模式。 例如,请使用 a(b|c|d),而不要使用 (ab|ac|ad)

    • 正则表达式引擎可能会因为无法在字符串末尾进行反向匹配而尝试过多排列组合而失败。 要防止回溯,请考虑使用占有式量词,例如 (a+b*)++c

  5. 单击创建

  6. 选择集合和字段以搜索与此正则表达式模式匹配的文本的出现。

在输出中,正则表达式提取的信息可以在 enriched_{field_name}entities 数组中找到。

在此示例中,构面路径regex.cccardnumber,为扩充项选择的字段为 text

{
  "enriched_text": [
    {
      "entities": [
        {
          "path": ".regex.cccardnumber",
          "type": "cccardnumber",
          "text": "4000000000000000"
        }
      ]
    }
  ],
  "text": [
    "He has 2 phones, 090-1234-5678 and 080-1234-5678. His credit card number is 4000000000000000."
  ]
}

从“改进和定制”页面提交测试查询时,可以添加基于 enriched_text.entities.model_name 字段的构面。 因此,您创建的 cccardnumber 正则表达式扩充项将显示为构面值,可根据该构面值过滤文档。 有关创建构面的更多信息,请参阅 添加构面

正则表达式限制

每个服务实例可定义的正则表达式数取决于 Discovery 套餐类型。

正则表达式计划详细信息
计划 每个服务实例的正则表达式
Cloud Pak for Data 无限制
Premium 100
企业 100
加号 (包括试用) 20