我有一个列,其中包含如下所示的资源路径:
/apiv3/widgets/100
/apiv3/widgets/search
/apiv3/widgets/new
我正在尝试获得像这样的 LIKE 或 REG_EX 只会匹配以数字结尾的字符串
我尝试了一些事情,例如:
LIKE '\/apiv3\/widgets\/[0-9]%'
LIKE '\/apiv3\/widgets\/[^0-9]%'
如何匹配仅以任意长度的数值结尾的路径?
我有一个列,其中包含如下所示的资源路径:
/apiv3/widgets/100
/apiv3/widgets/search
/apiv3/widgets/new
我正在尝试获得像这样的 LIKE 或 REG_EX 只会匹配以数字结尾的字符串
我尝试了一些事情,例如:
LIKE '\/apiv3\/widgets\/[0-9]%'
LIKE '\/apiv3\/widgets\/[^0-9]%'
如何匹配仅以任意长度的数值结尾的路径?
使用正则表达式匹配 ( ~
)。
对于以数字结尾的字符串:
...
WHERE value ~ '\d$'
E'\d$'
将是不正确的。这不是转义字符串。对于最后一个仅以数字
结尾的字符串:/
...
WHERE value ~ '/\d+$'
+
.. 一个或多个原子
/
.. 文字 /
快速测试:
SELECT x, x ~ '\d$' As one, x ~ '/\d+$' As two
FROM (
VALUES
('/apiv3/widgets/100')
,('/apiv3/widgets/search')
,('/apiv3/widgets/new')
,('/apiv3/widgets/added_test17')
) AS t(x);
x | one | two
-----------------------------+-----+-----
/apiv3/widgets/100 | t | t
/apiv3/widgets/search | f | f
/apiv3/widgets/new | f | f
/apiv3/widgets/added_test17 | t | f
'SIMILAR' 正则表达式见第 9.7.2 节。LIKE
不支持他们。
http://www.postgresql.org/docs/current/static/functions-matching.html
例子:
'abc' SIMILAR TO 'abc' true
'abc' SIMILAR TO 'a' false
'abc' SIMILAR TO '%(b|d)%' true
'abc' SIMILAR TO '(b|c)%' false