我希望选择具有与给定字符串输入匹配的正则表达式的行,而不是根据字符串值是否等于给定的正则表达式输入来选择行。
就目的而言,我正在尝试从输入网址中识别网站名称。
TABLE
WEBSITE REGEX
The New York Times ^.+\.nytimes.com.*$
这样做有好办法吗?我正在使用postgres,我希望避免大循环。
谢谢!
答案 0 :(得分:1)
这似乎工作正常:
CREATE TABLE Sites
(
SiteName text,
RegEx text
);
INSERT INTO Sites VALUES ('NY Times', '^.+\.nytimes.com.*$');
然后你可以这样做:
SELECT * FROM Sites
WHERE 'http://www.nytimes.com/Foo' ~ RegEx;
请记住,如果你有很多行,这可能会开始变慢,因为每次和对每一行运行正则表达式时,它都必须进行顺序表扫描。一种更好的方法可能是首先解析URL并以某种方式对其进行标准化,然后在表中查找完全匹配。