首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL子字符串非贪婪正则表达式

SQL子字符串非贪婪正则表达式
EN

Stack Overflow用户
提问于 2015-02-20 07:55:01
回答 2查看 1.4K关注 0票数 4

我有这样的数据

代码语言:javascript
复制
http://www.linz.at/politik_verwaltung/32386.asp

存储在文本列中。我以为非贪婪的抽离

代码语言:javascript
复制
select substring(turl from '\..*?$') as ext from tdata

会给我.asp,但它仍然是?greedely的结果

代码语言:javascript
复制
 .linz.at/politik_verwaltung/32386.asp

如何才能与点.的最后一次出现相匹配?

使用Postgresql 9.3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 08:12:41

\.[^.]*$匹配.,后面跟着任意数量的非点字符,后面跟着字符串的结尾:

代码语言:javascript
复制
# select substring('http://www.linz.at/politik_verwaltung/32386.asp' 
  from '\.[^.]*$');
 substring 
-----------
 .asp
(1 row)

至于为什么非贪婪的量词在这里不起作用,是因为它们仍然尽快开始匹配,同时仍然试图从那里开始尽可能短地匹配。

票数 6
EN

Stack Overflow用户

发布于 2015-02-20 08:05:41

试试这个:

代码语言:javascript
复制
\.[\w]*$

以下是它的工作原理:

所有word字符(\w),在dot (\.)和end of the string ($)之间,带有*的任意数字,以及最后一个.本身。

Note:更新了答案,现在将捕获以.结尾的字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28624051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档