跨多个正则表达式匹配字符串

时间:2013-04-09 14:34:22

标签: python regex postgresql

我有一个postgresql数据库,其中包含大约5000万个地址字符串条目。字符串示例是

NIAID, Opportunist Infect Res Branch, Treatment Res Programs, Div Aids, Bethesda, MD USA
PRINCETON UNIV,DEPT PSYCHOL,PRINCETON,NJ 08544

现在我必须检查地址是否与大约30,000个正则表达式的列表相匹配。我还需要知道哪个正则表达式匹配。正则表达式的例子是

%umass mem med ctr worcester%worcester%ma%
%darnnouth% 

这当然是postgres的'LIKE'格式。由于正则表达式匹配不能利用索引(不管怎么说,我已经索引了字段varchar_pattern_ops),这个操作的总运行时间将是大约30000x50万。

如果存在任何可以帮助我加快进程的python库,我也可以使用python进行正则表达式匹配。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

出了什么问题:

CREATE TABLE regex (
     regex text primary key
);

SELECT * FROM my_table
  JOIN regex ON mytextfield like regex;