首页 > 解决方案 > 如何在 Bigquery 中使用 Regexp_extract 提取第二个括号内的单词?

问题描述

我在包含这些值的bigquery表中有一个textPayload

文本有效载荷

# User@Host: root[root] @  [44.27.156.25]  thread_id: 67301  server_id: 1220687984

我需要按以下方式将用户名和主机名提取为单独的字段:

用户:root主机:44.27.156.25,

该列的所有值都将包含上面发布的文本

我正在尝试这样Select Regexp_Extract(textPayload,->无法获取正则表达式

我是 regexp_extract 的新手,我无法提取第二个单词host:44.27.156.25

谁能帮助我通过 Regexp_extract 提取主机名?

标签: google-bigqueryre2

解决方案


您可以使用User@文本有效负载中的上下文,以及您想要方括号中的 IP 地址来查找您想要的内容:

SELECT
    textPayload,
    REGEXP_EXTRACT(textPayload, r"\bUser@.*?\[(.*?)\]") AS User,
    REGEXP_EXTRACT(textPayload, r"\[(\d+\.\d+\.\d+\.\d+)\]"
FROM yourTable;

推荐阅读