【发布时间】:2016-05-31 15:45:34
【问题描述】:
我在数据库表中有一些没有http:// 的 URL:
url
row #1: 10.1.127.4/
row #2: 10.1.127.4/something
现在,下面的过滤器给了我第 2 行 - 很好:
SELECT * FROM mytable WHERE url REGEXP '[[:<:]]10.1.127.4/something[[:>:]]'
但是下面的过滤器没有给我第 1 行,但不应该吗?
SELECT * FROM mytable WHERE url REGEXP '[[:<:]]10.1.127.4/[[:>:]]'
我应该注意,通过反斜杠转义正斜杠也不会返回所需的第 1 行:
SELECT * FROM mytable WHERE url REGEXP '[[:<:]]10.1.127.4\/[[:>:]]'
【问题讨论】:
-
试试
'[[:<:]]10.1.127.4/' -
好吧,我很想要右边的词边界:)
-
没有意义,
/和字符串结尾之间没有字边界。 -
请具体说明具体要求。如果要在字符串末尾或非数字字符之前进行匹配,请使用
'[[:<:]]10[.]1[.]127[.]4/([[:>:]]|$)'。点应转义或放入括号表达式中。 -
如果您需要匹配任何数字(1 个或多个),请使用
[0-9]+,实际上/([[:>:]]将在 alnum 字符之前匹配/。如果你需要相反的,使用'[[:<:]]10[.]1[.]127[.]4/([^[:alnum:]]|$)'
标签: mysql regex trailing-slash word-boundary