繁体   English   中英

SQL子串非贪心正则表达式

[英]SQL substring non greedy regex

我有像这样的数据

http://www.linz.at/politik_verwaltung/32386.asp

存储在文本列中。 我以为是非贪婪的提取物

select substring(turl from '\..*?$') as ext from tdata

会给我.asp而不是它仍然?greedely结果

 .linz.at/politik_verwaltung/32386.asp

我怎样才能匹配最后一次出现的点.
使用Postgresql 9.3

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

# select substring('http://www.linz.at/politik_verwaltung/32386.asp' 
  from '\.[^.]*$');
 substring 
-----------
 .asp
(1 row)

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

尝试这个:

\.[\w]*$

下面是它的工作原理:

所有word字符( \\w ),其中任意数字带*dot\\. )和end of the string$ ),最后一个. 本身。

注意 :更新答案,现在将捕获字符串结束.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM