regex - 如何在 Postgresql 中提取子字符串模式

标签 regex postgresql substring regexp-substr

我有一列有很多不一致的字符串。其中一些包含一个子字符串,该子字符串具有我想提取的 '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 个数字开头、后跟一个下划线、两个大写字符、一个下划线、两个大写字符、一个下划线、三个大写字符、一个下划线和一个左括号的子字符串后跟至少一个小写字母、右括号、下划线、左括号、至少一个小写字符和右括号。

如果 2015mmdd 确实意味着 2015 后跟字符串 mmdd 那么你需要这个:

substring(col_name, '[0-9]{4}mmdd_[A-Z]{2}_[A-Z]{2}_[A-Z]{3}_\([a-z]+\)_\([a-z]+\)')

关于regex - 如何在 Postgresql 中提取子字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31381174/

相关文章:

Python psycopg2 检查行是否存在

css - 如何限制选择上传的文件名预览中的字符?

regex - 使用正则表达式更改 bash 中的行

sql - PostgreSQL 查找重复字段

sql - 根据sql中的月份和年份选择一行

java - 实例化一个新对象,从参数中获取一个indexoutofbounds,它是一个数组

swift - Swift 4 中更简单的字符串切片

python - 使用正则表达式改变数字 Pandas

用于匹配 UNC 路径的 PHP 正则表达式

PHP - 从文本中删除点但排除数字