我有这样的数据
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
发布于 2015-02-20 08:12:41
\.[^.]*$匹配.,后面跟着任意数量的非点字符,后面跟着字符串的结尾:
# select substring('http://www.linz.at/politik_verwaltung/32386.asp'
from '\.[^.]*$');
substring
-----------
.asp
(1 row)至于为什么非贪婪的量词在这里不起作用,是因为它们仍然尽快开始匹配,同时仍然试图从那里开始尽可能短地匹配。
发布于 2015-02-20 08:05:41
试试这个:
\.[\w]*$以下是它的工作原理:
所有word字符(\w),在dot (\.)和end of the string ($)之间,带有*的任意数字,以及最后一个.本身。
Note:更新了答案,现在将捕获以.结尾的字符串。
https://stackoverflow.com/questions/28624051
复制相似问题