标签: regex postgresql posix
我有以下几行数据:
登录; visit_homepage;买 寄存器;登录;购买; visit_homepage
登录; visit_homepage;买
寄存器;登录;购买; visit_homepage
我希望匹配所有具有登录事件后跟buy事件的行。登录和购买活动之间可能还有其他一些事件。购买可以是最后一次活动,登录可以是第一次活动。我需要完全匹配登录并购买不是通配符。
我试过这个:
SELECT * FROM events WHERE events_list ~ 'login;.*buy;?.*$';
但我认为并未涵盖所有情况。
由于
答案 0 :(得分:2)
此正则表达式应与行匹配:
\mlogin\M.*?\mbuy\M
它会搜索单词login,然后搜索buy。
login
buy
\m
\M
使用边界可防止匹配组成单词的login或buy(例如foologin)。
foologin
有关PostgreSQL here中这些POSIX转义的更多信息。
答案 1 :(得分:0)
尝试使用此正则表达式选择两行
login;.*buy.*$或login.*buy.*$
login;.*buy.*$
login.*buy.*$
您可以查看演示here
或者您可以使用login.*buy
login.*buy