【发布时间】:2021-09-08 09:39:58
【问题描述】:
我有一个数据集,我需要在其中提取域样式格式的别名:域\别名,其中别名位于反斜杠之后。尽管有几次尝试将反斜杠视为一个字符,但它似乎被视为一个转义字符。我首先使用已知的非转义字符(成功的正斜杠)测试了我的正则表达式模式。然后,我尝试了使用反斜杠的相同模式,然后使用我熟悉的方法进行了几次排列,以使正则表达式将反斜杠视为一个字符,而不是作为转义字符而不成功。你如何让这个正则表达式模式与 Spark 中的反斜杠一起工作?
正则表达式模式验证
select regexp_extract('domain/alias', '/(.*)') as test --Results: alias Works with forward slash.
排列和结果
select regexp_extract('domain\alias', '\(.*)') as test --Results: domainalias Removes the backslash for some reason
select regexp_extract('domain\alias', '"""\"""(.*)') as test --Results: empty string
select regexp_extract('domain\alias', '"""\\"""(.*)') as test --Results: empty string
select regexp_extract('domain\alias', '\\(.*)') as test --Results: Error in SQL statement: NullPointerException:
select regexp_extract('domain\alias', '\\\(.*)') as test --Results: Error in SQL statement: NullPointerException:
【问题讨论】:
标签: regex apache-spark apache-spark-sql