一个正则表达式中的两个模式

ssm49v7z  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(412)

我尝试在clickhouse数据库的查询中组合两个事例的正则表达式:
最多符号“@”=> (^[^@]+) 没有域“company\”和“company.com\”=> (?:company\.com\\\\\\\\+|company\\\\\\\\+)(.*) 我发现使用“regex online”有两种方法:
^company\\(.)|^(.)@|^(?!company\\.).$ (?<=company\\\\)(.*)|(.*)(?<=@)|^(?!company\\\\.*).* 但是,建筑 ?! 以及 ?<= 不支持(错误:perl运算符无效)。我用过命令 extract ,例如。 extract(User, '(?<=company\\\\)(.*)|(.*)(?<=@)|^(?!company\\\\.*).*') 你能给我一些建议,让我明白如何使这个正则表达式合适的方式,请。
括号内-应该通过,括号外-不应该:
公司[-1d2e]
[ de]@company.com
【123 de】
[12345]

ogsagwnx

ogsagwnx1#

似乎需要使用replaceregexpone的几个串行调用:

SELECT str,
    replaceRegexpOne(str, '(.*company\\\\)(.*)', '\\2') preliminary_result_1,
    replaceRegexpOne(preliminary_result_1, '(.*)(@company.com)', '\\1') result
FROM (
    /* test data */
    SELECT arrayJoin([
        'company\\ABC-1D2E',
        'ABC-DE@company.com',
        '123-ABCDE',
        '12345'
        ]) str
)
/* result:
┌─str────────────────┬─preliminary_result_1─┬─result────┐
│ company\ABC-1D2E   │ ABC-1D2E             │ ABC-1D2E  │
│ ABC-DE@company.com │ ABC-DE@company.com   │ ABC-DE    │
│ 123-ABCDE          │ 123-ABCDE            │ 123-ABCDE │
│ 12345              │ 12345                │ 12345     │
└────────────────────┴──────────────────────┴───────────┘

* /

相关问题