使用我的matchstring搜索包含正则表达式的行

时间:2014-01-03 12:01:50

标签: mysql regex

我的用户在应用中输入正则的网址表达式。我必须使用与给定url匹配的正则表达式返回行。

我有一张这样的表:

+----+-----------------------+--------------------------+
| id | Survey                | URL Regexp               |
+----+-----------------------+--------------------------+
|  1 | User Age survey       | http://*.google.com/*    |
|  2 | Payment intent survey | http://mail.google.com/* |
|  3 | User Country info     | *reader.google.com*      |
|  4 | Company information   | http://facebook.com/*    |
|  5 | Satisfaction survey   | http://*twitter.com/*    |
+----+-----------------------+--------------------------+

我想针对网址运行查询,http://mail.google.com/index.html并查看(1, 2)作为结果(例如User Age SurveyPayment intent survey条记录。)

我想要运行这样的查询:

SELECT * FROM surveys where MATCH_REGEXP('http://mail.google.com/index.html')

我无法找到此类表达的任何文档。解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这是一个working sqlfiddle示例。

鉴于您有这些数据:

CREATE TABLE surveys (
  id int auto_increment primary key, 
  survey varchar(30), 
  url_regex varchar(30)
);

INSERT INTO surveys (survey, url_regex) VALUES
('User Age survey',       'http://.*.google.com/*'),
('Payment intent survey', 'http://mail.google.com/*'),
('User Country info',     '*reader.google.com*'),
('Company information',   'http://facebook.com/*'),
('Satisfaction survey',   'http://*twitter.com/*');

您可以执行此查询以达到您想要的效果:

SELECT id FROM surveys
WHERE 'http://mail.google.com/index.html' REGEXP url_regex;

结果将是:

1
2

请注意,为了达到预期的结果,即(1, 2),必须通过在第一个星号前加一个点来修复“用户年龄调查”正则表达式。