首页 > 解决方案 > 正则表达式搜索和删除所有字符,包括最后一个连字符

问题描述

我正在寻找一种方法来搜索和删除所有内容,包括 - 从下面的字符串中。我尝试了各种变化,但没有一个完全符合我的要求。我试过regex_replace了,但它并没有捕捉到所有这些,我发现自己为每个场景创建了单独的正则表达式语句,这似乎并不比硬编码更好。我希望有人有解决方案。我将非常感激。

POLY GON - HOME
POLY-GON-HOME
POLY - GON - HOME
POLY - GON HOME
PG - HOME
PG-HOME

我想在第二个连字符之后显示所有内容。所以,HOME这就是我想要展示的。
我试过了

regexp_replace(string,\A[^-]+-[^-]+)

但它会删除除第二个连字符之外的所有内容。否则它工作。

标签: sqlregex

解决方案


利用

SELECT regexp_replace(string, '^.*-', '')
  • ^匹配字符串的开头。
  • .*匹配任何字符串
  • -匹配连字符

由于*是贪婪的,这将匹配到最后一个连字符的所有内容。然后它被一个空字符串替换。


推荐阅读