Postgresql
如何使用正則表達式獲取第二個字元序列
我有一個帶有地址的欄位(例如
68 TIDAL BREEZE DR
),並且這個正則表達式在最後一個序列(例如68 TIDAL BREEZE
)之前獲取所有內容:substring (address from '(.*) ')
我的問題是,如何修改此表達式以獲取第一個序列(例如 68)之後的所有內容以及最後一個序列(例如 DR)之前的所有內容,如下所示:
TIDAL BREEZE
?我正在使用 PostgreSQL 9.5。
postgres=# select substring('68 TIDAL BREEZE DR' from '\s+(.*)\s'); substring -------------- TIDAL BREEZE (1 row)
延遲匹配第一個空格字元以切掉第一位。
不使用正則表達式
我強烈建議您不要使用正則表達式解析地址。如果您正在尋找更好的做法,有一種解析地址的方法在此答案中展示和解釋
SELECT * FROM standardize_address( 'us_lex','us_gaz','us_rules', '68 TIDAL BREEZE DR, Citytown Texas, 77346' ); building | house_num | predir | qual | pretype | name | suftype | sufdir | ruralroute | extra | city | state | country | postcode | box | unit ----------+-----------+--------+------+---------+--------------+---------+--------+------------+-------+----------+-------+---------+----------+-----+------ | 68 | | | | TIDAL BREEZE | DRIVE | | | | CITYTOWN | TEXAS | USA | 77346 | | (1 row)
或僅獲得某些值
SELECT house_num || ' Other Stuff ' || suftype AS whatever FROM standardize_address('us_lex', 'us_gaz', 'us_rules', '68 TIDAL BREEZE DR, Citytown Texas, 77346' ); whatever ---------------------- 68 Other Stuff DRIVE (1 row)