2017-02-21 3 views
0

I 데이터의 다음 행이 있습니다PostgreSQL의 POSIX의 정규 표현식

로그인, visit_homepage,

레지스터를 구입, 로그인, 구매, visit_homepage

내가 가진 모든 행을 일치시킬를 로그인 이벤트 다음에 구매 이벤트. 로그인 이벤트와 구매 이벤트 사이에 다른 이벤트가있을 수 있습니다. 구매는 마지막 이벤트 일 수 있으며 로그인은 첫 번째 이벤트 일 수 있습니다. 정확한 로그인 일치가 필요하며 와일드 카드를 사지 않습니다.

나는 이것을 시도 :

SELECT * FROM events WHERE events_list ~ 'login;.*buy;?.*$';

하지만 난이 모든 경우에 적용되지 않습니다 생각합니다.

감사

+0

시도해 보셨습니까? – Niitaku

+0

당신이 시도한 것을 포함하십시오 –

+0

나는 이것을 시도했습니다 : SELECT * FROM events where events_list ~ 'login;. * ;;. * $'; –

답변

0

당신이 데모 here

를 확인하실 수 있습니다 또는 당신이 더 login.*buy

를 사용하여 단순화 할 수

login;.*buy.*$ 또는 login.*buy.*$

선택하려면이 정규식 두 행을 시도

+0

을 확인하십시오. *는 구매 전후에 어떤 항목과도 ​​일치하기 때문에 올바르게 작동하지 않습니다. –

+0

** 로그인 이벤트 다음에 구매 이벤트가있는 모든 행을 일치 시키려고합니다. **. 귀하의 요구 사항입니다. 내 대답은'login' 다음에'buy'가있는 이벤트 목록을 포함하는 모든 행과 일치합니다. 나는 그것이 잘못되어가는 곳을 알지 못한다. 입력 결과와 일치하는 테스트 케이스를 더 제공하고, 'foologin' 사례를 피하기 위해 –

2

이 정규식은 다음 행과 일치해야합니다.

\mlogin\M.*?\mbuy\M 

login 다음에 buy을 검색합니다.

  • \m는 단어
  • \M의 시작 경계의

사용 단어 (예. foologin)를 구성한다 login 또는 buy 일치 방지 단어의 끝을 일치 일치합니다.

PostgreSQL의 POSIX 이스케이프에 대한 자세한 정보 here.

+1

이 내 것보다 좋다. 한 가지 더 좋은 습관을 배웠습니다. –