즉, 특정 도메인 용 텍스트 블록에있는 모든 URL을 일치시켜야하며 특정 쿼리 문자열 매개 변수를 포함하지 않으며 value (refer = twitter)Regex : 특정 도메인에 대한 URL 일치 특정 쿼리 문자열 매개 변수에 특정 값이있을 때 제외
다음 정규 표현식을 사용하여 도메인의 모든 URL을 일치시킵니다.
\b(https?://)?([a-z0-9-]+\.)*example\.com(/[^\s]*)?
난 그냥 마지막 부분은 그래서 다음
example.com
http://example.com/
https://www.example.com#link
www.example.com?somevalue=foo
일치해야
(?![&?]refer=twitter)\b(https?://)?([a-z0-9-]+\.)*example\.com(/[^\s]*)?
를 동작하지 않습니다 그러나 이러한해야하지
https://www.anotherexample.com#link
www.example.com?refer=twitter
편집 : 그리고 요 u는이 기간을 따기없이
For examples go to http://example.com?foo=foo.bar.
같은 문장의 아웃
http://example.com?foo=foo.bar
에 맞게 얻을 수 있습니다, 그것은 좋은 것입니다!
EDIT2 : 이
\b(https?://)?([a-z0-9-]+\.)*example\.com/?([^\s]*[^.])?
EDIT3와 마침표의 문제를 해결 :이 작동하는 것 같다 , 또는 내가
(?!\b.*[&?]refer=twitter)\b(https?://)?([a-z0-9-]+\.)*example\.com/?([^\s]*[^.])?
던져 한 시험의 최소 99 % EDIT4 :
\b(?!.*[&?]refer=twitter)(https?://)?([a-z0-9-]+\.)*nygard\.com(?!\.)[^\s]*\b+
그리고 우리는 "이제 두 가지 문제가 있습니다"라는 설명을 자제 할 수 있습니다. – CaffGeek
사용자 생성 텍스트에서 URL을 추출하기위한 정규 표현식은 거의 불가능합니다. 세 가지 문제가 있습니다. 입력에 대한 제어가 없으며 일반적인 두 정규식 문제입니다. :) – jmucchiello
당신은 "거의 불가능합니다"라고 말하면서 정의상 가능하다는 뜻입니다. – CaffGeek