首页 > 解决方案 > 正则表达式:获取“路径”的倒数第二部分

问题描述

我有这样的事情:

>AAA>BBB>CCC>DDD

([^>]*$)

我得到了最后一部分DDD。我怎样才能得到它之前的部分,CCC

谢谢!

标签: regexoracle

解决方案


您可以使用

REGEXP_SUBSTR('>AAA>BBB>CCC>DDD', '([^>]+)>[^>]+$', 1, 1, NULL, 1)

([^>]+)>[^>]+$则表达式将匹配并捕获除 之外的任何 1+ 字符并将其捕获到组 1>中,然后将匹配>后跟除>字符串末尾之外的任何 1+ 字符。

最后一个参数 ,1告诉REGEXP_SUBSTR只返回捕获的子字符串。

在线演示

另一种方法是替换整个字符串,但保留您选择的捕获部分:

REGEXP_REPLACE( '>AAA>BBB>CCC>DDD', '.*>([^>]+)>[^>]+$', '\1')

查看另一个在线演示

在这里,.*>将匹配直到 的所有字符串>,然后([^>]+)将捕获除字符串之外的任何 1+ 个字符>,然后>[^>]+$将匹配并消耗除字符串末尾>之外的 1+ 个字符。>


推荐阅读