如何解决REGEX搜索并删除所有字符,直到最后一个连字符
我正在寻找一种方法来搜索和删除以下字符串中的所有内容,包括-。我已经尝试过变体,但没有一个能完全按照我的意愿工作。我尝试了regex_replace
,但是并没有抓住所有问题,我发现自己为每种情况创建了单独的regexp语句,这似乎比硬编码更好。我希望有人能解决。我非常感谢。
POLY GON - HOME
POLY-GON-HOME
POLY - GON - HOME
POLY - GON HOME
PG - HOME
PG-HOME
我想显示第二个连字符后的所有内容。因此,HOME
是我要显示的内容。
我尝试过
regexp_replace(string,\A[^-]+-[^-]+)
,但它将删除除第二个连字符以外的所有内容。否则它会起作用。
解决方法
使用
SELECT regexp_replace(string,'^.*-','')
-
^
匹配字符串的开头。 -
.*
匹配任何字符串 -
-
匹配连字符
由于*
是贪婪的,因此它将匹配所有字符,直到最后一个连字符为止。然后将其替换为空字符串。
我在想类似的东西:
select regexp_substr(string,'[^-]+$')
这基本上保留了不是连字符的最后一个字符串。
并非所有支持正则表达式的数据库都支持regexp_substr()
,但是它们具有一些相似的功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。