我有一列包含很多不一致的字符串。其中一些包含一个'2015mmdd_AB_CD_EFG_(text)_(text)_HIJ'
我想提取的具有一致模式的子字符串。我觉得这是正则表达式和子字符串命令的交叉案例。
到目前为止,我最好的方法是相当丑陋
substring(col_name, '........_.._.._..._.+_.+_...')
它不会根据需要结束输出,而是输出类似于'(...)_HIJ_blablabla'。
在这种情况下,如何有效地结合模式识别和子串选择?
我有一列包含很多不一致的字符串。其中一些包含一个'2015mmdd_AB_CD_EFG_(text)_(text)_HIJ'
我想提取的具有一致模式的子字符串。我觉得这是正则表达式和子字符串命令的交叉案例。
到目前为止,我最好的方法是相当丑陋
substring(col_name, '........_.._.._..._.+_.+_...')
它不会根据需要结束输出,而是输出类似于'(...)_HIJ_blablabla'。
在这种情况下,如何有效地结合模式识别和子串选择?
假设这2015mmdd
实际上意味着某种“日期”,以便真实数据包含例如20150713
以下内容:
substring(col_name, '[0-9]{8}_[A-Z]{2}_[A-Z]{2}_[A-Z]{3}_\([a-z]+\)_\([a-z]+\)')
这将返回以 8 个数字开头的子字符串,后跟一个下划线,后跟两个大写字符,后跟一个下划线,后跟两个大写字符,后跟一个下划线,后跟三个大写字符,后跟一个下划线,后跟一个左括号,然后是 at租用一个小写字母,后跟一个右括号,然后是一个下划线,然后是一个左括号,然后是至少一个小写字符,后跟一个右括号。
如果2015mmdd
确实意味着2015
后跟字符串,mmdd
那么你需要这个:
substring(col_name, '[0-9]{4}mmdd_[A-Z]{2}_[A-Z]{2}_[A-Z]{3}_\([a-z]+\)_\([a-z]+\)')