sql - 正则表达式搜索和删除所有字符,包括最后一个连字符
问题描述
我正在寻找一种方法来搜索和删除所有内容,包括 - 从下面的字符串中。我尝试了各种变化,但没有一个完全符合我的要求。我试过regex_replace
了,但它并没有捕捉到所有这些,我发现自己为每个场景创建了单独的正则表达式语句,这似乎并不比硬编码更好。我希望有人有解决方案。我将非常感激。
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, '^.*-', '')
^
匹配字符串的开头。.*
匹配任何字符串-
匹配连字符
由于*
是贪婪的,这将匹配到最后一个连字符的所有内容。然后它被一个空字符串替换。
推荐阅读
- c# - 在 pod 中使用并行编程是个好主意
- php - 如何将json文件中的值与PHP匹配
- c - 函数内的互斥 Contiki
- python - 如何使我的 2D 高斯适合我的图像
- python - 如何用字符串标签和特征训练树分类器?
- apache-spark - 有哪些工具/框架可用于 Spark 作业监控和警报?
- xslt - 如何替换xml属性
- xamarin.forms - Xamarin 形式:Stacklayout GestureRecognizers 在 UWP 中不起作用(在 IOS 和 Android 中工作正常)
- javascript - 如何通过单击 Javascript 中的图像来更改内容?
- python - 在运行时石墨烯上创建动态模式