如何从 REGEX Oracle Sql 查询中获取一个字母和一个数字

How to get one letter and one number from REGEX Oracle Sql query

试图从此代码中得到 "P1:",但如果我将数字添加到该代码中,它也会输出这些代码。我如何限制它只接受数字 1-9 并让它显示 "NULL" 如果它是两位数?

select REGEXP_SUBSTR('P1:EMAIL', '[P]+\d+[:]') as test from dual;

您已经包含了 + 运算符,这意味着 match one or more of the character or class。如果你想完全匹配一个那么你不想要那个。您也不需要方括号:

select REGEXP_SUBSTR('P1:EMAIL', 'P\d:') as test from dual;

您可能还想将模式锚定到字符串的开头,但这并不清楚;如果是那么:

select REGEXP_SUBSTR('P1:EMAIL', '^P\d:') as test from dual;