[英]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.