Regex 在模式PostgreSQL之后提取字符串

Regex 在模式PostgreSQL之后提取字符串,regex,string,postgresql,substring,Regex,String,Postgresql,Substring,因此,我有一个类似以下的专栏: diagnosis 715.16 oSTEOARTHRITIS, LOWER-LEG 715.17 - OSTEOARTHRITIS, ANKLE AND FOOT 715.90 oSTEOARTHRITIS, UNSPECIFIED 716.10 - TRAUMATIC ARTHROPATHY - UNSPECIFIED 有些条目有初始破折号,有些则没有。有些字符串后面有破折号 我想在itallics中使用以下模式选择子字符串: 任意字符空格任意字母数字字

因此,我有一个类似以下的专栏:

diagnosis

715.16 oSTEOARTHRITIS, LOWER-LEG 
715.17 - OSTEOARTHRITIS, ANKLE AND FOOT
715.90 oSTEOARTHRITIS, UNSPECIFIED
716.10 - TRAUMATIC ARTHROPATHY - UNSPECIFIED
有些条目有初始破折号,有些则没有。有些字符串后面有破折号

我想在itallics中使用以下模式选择子字符串:

任意字符空格任意字母数字字符串的其余部分

任何字符空格任何字母数字字符串的其余部分

我的问题是: 为from TablecDdict从“%\w%”中选择子字符串诊断

但它只返回所有包含空字符串的行,没有错误。关于如何实际输出提取的子字符串有什么想法吗

谢谢

使用regexp\u replace跳过第一个空格前面的所有字符,使用空格和ltrim跳过其他'-'字符串:

with t(diagnosis) as (values 
    ('715.16 oSTEOARTHRITIS, LOWER-LEG'),
    ('715.17 - OSTEOARTHRITIS, ANKLE AND FOOT'),
    ('715.90 oSTEOARTHRITIS, UNSPECIFIED'),
    ('716.10 - TRAUMATIC ARTHROPATHY - UNSPECIFIED'))
select ltrim(regexp_replace(diagnosis, '.*? (.*)', '\1'), '- ') result
from t;

               result                
-------------------------------------
 oSTEOARTHRITIS, LOWER-LEG
 OSTEOARTHRITIS, ANKLE AND FOOT
 oSTEOARTHRITIS, UNSPECIFIED
 TRAUMATIC ARTHROPATHY - UNSPECIFIED
(4 rows)

下面是关于正则表达式的文档,但它们根本不在上下文中使用substring函数。如果我为'\w'输入'A',我会得到一些以字母'A'开头的子字符串,那些不匹配的行为空。我想我只需要将“\w”替换为任何字母数字的正确通配符。