2012-07-04 2 views
1

.com TLD가있는 도메인을 식별하기 위해 MySQL에 REGEX를 작성했습니다. URL은 일반적으로 형태MySQL 정규식은 단일 행만 반환합니다.

http://example.com/ 

이 같은 외모와 함께 제공되는 정규식은 다음과 같습니다

REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com[[./.]]' 

우리가 일치하는 이유 : 우리는 같은 URL을 선택하지 않도록 //입니다

http://example.com/error.com/wrong.com 따라서 내 쿼리 그러나

SELECT DISTINCT name 
FROM table 
WHERE name REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com[[./.]]'" 

이다, 이것은 단지 하나의 반환 행이 정말로 더 많은 것을 돌려야 할 때 (1000 개 이상) 쿼리로 어떤 실수를 했습니까?

답변

1

그게 문제지만, 그것은 [[:alnum:]]하지 [:alnum:]

+0

ERK를 regexing보다는 URL을 분할 명확 수 있습니다해야하는지 확실하지. 글쎄, 다행히 내가 설명서를 잘못 읽은 것처럼 보인다. – chuuk

0

현재 검색어는 .com이 아닌 name으로 끝나고 .com/으로 끝나고 그 뒤에 슬래시로 시작하는 항목 만 표시됩니다. 다음보십시오 :

SELECT DISTINCT name 
FROM table 
WHERE name REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com([[./.]].*)?'" 
0

SELECT DISTINCT name FROM table 
WHERE SUBSTRING_INDEX((SUBSTRING_INDEX(name,'/',3),'.',-1)='com';