从PostgreSQL中提取匹配正则表达式的字符串
在PostgreSQL中提取与正则表达式匹配的特定字符串的方法的备忘录。虽然手册中写了很多内容,但如果不涉及复杂操作,只需使用substring函数即可。
具体示例
如果没有括号用于捕获,将返回匹配的子字符串。
select substring('psql (PostgreSQL) 10.18', '^\w+'); --> psql
select substring('psql (PostgreSQL) 10.18', '\(\w+\)'); --> (PostgreSQL)
select substring('psql (PostgreSQL) 10.18', '[\d\.]+$'); --> 10.18
如果加上括号用于捕获,只有与括号匹配的字符串才会被返回。使用这种方式的案例似乎更多。
select substring('psql (PostgreSQL) 10.18', '\((\w+)\)'); --> PostgreSQL
select substring('psql (PostgreSQL) 10.18', '(\d+)\.\d+'); --> 10
select substring('psql (PostgreSQL) 10.18', '\d+\.(\d+)'); --> 18
如果在捕获括号上添加多个括号,则只有在第一个括号中匹配的字符串将被返回。因此,如果不想捕获的括号上加上”?”则可以跳过。
select substring('psql (PostgreSQL) 10.18', '(\d+)\.(\d+)'); --> 10
select substring('psql (PostgreSQL) 10.18', '(?:\d+)\.(\d+)'); --> 18
如果本来就没有匹配的情况,结果就会是null。
select substring('psql (PostgreSQL) 10.18', 'mysql'); --> null
不过你可以挑选以下内容,其中一个就是:额外赠品。
用 “substring( from )” 取代 “substring(, )” 是一样的。
select substring('psql (PostgreSQL) 10.18' from '^\w+'); --> psql
确认环境
- PostgreSQL 10.18
文献引用
- 9.7. パターンマッチ – PostgreSQL 10.5文書