【问题标题】:RegEx with spaces and delimiters带有空格和分隔符的正则表达式
【发布时间】:2021-12-27 17:52:51
【问题描述】:

我有两列包含以下数据:

第 1 栏:BIG123 - 电信 (John Barrot)

第 2 栏:7 国会 1 - 走向

数据格式与空格相同,“-”作为每列的分隔符,但组织、名称和起始代码可以比您在此处看到的更长或更短(而不是 Telecommunications 它可以是 CEO或者代替 John Barrott,它可以是 Guy Rodriguez 等)。我需要提取以下内容:

(列名以粗体显示)

组织电信

主管约翰·巴罗

个人资料 国会 1 - 走向

我一直在使用以下备忘单,但我仍然无法提取:https://cheatography.com/davechild/cheat-sheets/regular-expressions/

我已经尝试了 regex_extract(column1, [A-Z][a-z]) 并且我只得到了“-”之后第 1 列的前两个字母。

任何帮助都会很棒。

谢谢,

DW

【问题讨论】:

    标签: sql regex google-bigquery


    【解决方案1】:

    使用您的示例尝试以下操作

    with sample_data as (
        select 'BIG123 - Telecommunications (John Barrot)' AS COLUMN_1, '7 Congressional 1 - Toward' as COLUMN_2
    )
    select regexp_extract(COLUMN_1, r'.+-\s(\S+)') as Organization
        , regexp_extract(COLUMN_1, r'.+\((.+\w)') as Supervisor
        , regexp_extract(COLUMN_2, r'\d+\s(.+)') as Profile
    from sample_data
    

    【讨论】:

    • 感谢丹尼尔的崩溃。你对如何学习正则表达式函数的正确语法有什么建议吗?我看过了,但没有看到任何解释格式的内容。
    • 我通常使用 regex101 找出正则表达式模式,它给出了匹配的细分以及为什么,模式的组成部分,并在屏幕上具有可搜索的参考库。以下是上述示例中的配置文件模式示例:regex101.com/r/FdUXqN/1 此外,您可以在此处找到有关 BigQuery 正则表达式提取功能的文档:cloud.google.com/bigquery/docs/reference/standard-sql/…
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 2018-11-19
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2020-08-29
    相关资源
    最近更新 更多