2010-04-13 4 views
0

예 - 다른 멍청한 정규식 쿼리, 나는 얻을 수없는 것 같습니다.somone 내 간단한 정규식 쿼리를 해결하는 데 도움이 될 수 있습니까?

foo.mydomain.com/ 또는 foo.mydomain.com:1234/ 또는 foo.mydomain.com:<random port>/ 문자열에 대한 모든 일치를 얻으려고하지만 다른 경로가 일치하지 않습니다. 즉, foo.mydomain.com/bar 또는

foo.mydomain.com/bar/pewpew 내가 사용하려고 : foo.mydomain.com(.*)/$, 슬래시 때까지 그 후, 다음 아무것도 foo.mydomain.com와 다음 종료 (이 검색 쿼리가 줄 끝에 고정됩니다)

다음 어떤 일을 시작 (.. .

하지만 내가 foo.mydomain.com:1234 전달할 때이 일치하지 않는 작동하지 않습니다하지만 정확한 (예상대로) foo.mydomain.com/bar/pewpew가 일치하지 않습니다 말한다

어떤 아이디어를

+0

'foo.mydomain.com' (후행 슬래시 없음)은 어떨까요? 일치해야합니까? –

+0

당신의 영역에서 탈출하는 것이 좋은 습관이기 때문에. 또한, 당신이 일치하기를 원하는 것을 verbalise하는 데 도움이됩니다. 정규식은 쉽게 구할 수 있습니다 (구문을 기억할 수있는 경우). 이 경우 : 도메인과 일치 (선택적으로 포트 지정자 다음에 선택적으로 슬래시가 뒤에 붙음) – CurtainDog

답변

2

시도해보십시오.?

^foo\.mydomain\.com(?::\d+)?/?$ 
  • ^ : 앵커에게
  • \.를 시작
  • \d 그룹화 : .가 문자 . 당신이 \
  • (?:)으로 탈출 할 필요가 일치 char..to 메타 인을 한 자릿수
  • \d+ : 하나 이상의 숫자
  • ?는 : 끝 앵커
+0

PCRE - Perl 호환 정규 표현식 가정. '? :'을 삭제하면 POSIX ERE (확장 정규 표현식)입니다. (또한 뒤에 슬래시없이 포트 번호를 일치 시키려면 '$'앞에 '/?'가 필요합니다.) –

+0

@ Purne.Krome : 정규식이 ** foo.mydomain.com/bar **와 일치하지 않습니다. 당신은 확실히 그것을 정확하게 검사 했습니까? – codaddict

+0

나는 잘했다. 그것은 나의 재 작성자의 또 다른 길이었습니다. 나는 당신의 의견을 삭제하기 전에 U가 그것을 보지 못하길 바랐다 : P * blush * –

0
foo\.mydomain\.com(:\d{1,5})?/\s*$ 

이 하나를 시도 :

  • $ 선택 이전의 패턴을 만든다.

  • +1

    포트는 4 개 이상의 문자가 될 수있다 .... –

    +0

    @Pure. : 죄송합니다. 0 - 65535. 한 번에 한 자리 씩 내 마음을 잃어 버렸습니다. 결정된. 감사! – Gishu

    관련 문제