regexp_substr 向后看 Oracle
regexp_substr with look behind Oracle
我使用 regexp_substr 来获取字符串中的最后 2 个字符,就像这样
A-XY
XY
select regexp_substr('A-XY','([A-]+)?([A-Z]+)') 来自 dual
这找到了两个字符串,但我只需要显示 XY。
我试图通过在第一个 () 中向后看来解决它,例如 (?<=[A-]+) 但它不起作用,我只得到一个 A 作为输出。
您可以匹配整个子字符串,包括后视部分(并使用 $
将其锚定到字符串的末尾),然后使用 [=] 的第 6 个参数仅提取捕获组12=]:
SELECT regexp_substr(
'A-XY',
'A-([A-Z]+)$',
1,
1,
NULL,
1
) AS last_characters
FROM DUAL;
输出:
LAST_CHARACTERS
XY
db<>fiddle here
我使用 regexp_substr 来获取字符串中的最后 2 个字符,就像这样 A-XY XY
select regexp_substr('A-XY','([A-]+)?([A-Z]+)') 来自 dual
这找到了两个字符串,但我只需要显示 XY。 我试图通过在第一个 () 中向后看来解决它,例如 (?<=[A-]+) 但它不起作用,我只得到一个 A 作为输出。
您可以匹配整个子字符串,包括后视部分(并使用 $
将其锚定到字符串的末尾),然后使用 [=] 的第 6 个参数仅提取捕获组12=]:
SELECT regexp_substr(
'A-XY',
'A-([A-Z]+)$',
1,
1,
NULL,
1
) AS last_characters
FROM DUAL;
输出:
LAST_CHARACTERS XY
db<>fiddle here