2009-09-25 4 views
0

URL이 두 배가되는 웹 사이트의 텍스트 편집기에 문제가 있습니다. 그래서 예를 들어, 텍스트 필드는 포함되어 보일 수 있습니다 :데이터베이스 필드에 잘못된 URL을 찾으려면 정규식을 사용하십시오.

This is a description for a media item, and here in <a href="http://www.example.com/apage.htmlhttp://www.example.com/apage.html">a link</a>. 

그래서 꽤 많이 나는 "http://www.example.com/apage.htmlhttp://www.example.com/apage.html"

+0

일치하는 것을 원하거나 그 중 하나만 캡처하고 싶습니까? –

답변

3
같이 http로 시작하고 닫는 따옴표 전에 다른 HTTP이있는 문자열을 감지하는 정규식이 필요
"http[^"]+http 
0

*.? 구문을 사용하면 다음을 찾을 수 있습니다.

http(.*?)http 

및 해당되는 경우 URL을 거부하십시오.

0

http로 시작하여 견적이되기 전에 다른 HTTP를 가지고 문자열이 내가 대신 ;-)

0

어 클레멘 타인의 답변을 할 수 있습니다 의심 정확히 질문에 대한 대답하지만,

^http[^"]*http 

그러나 당신은 아마 이런 걸 원하는 것 :

("http[^"]+)(http) 

그런 다음 두 그리고 만약 \ 1 === 비교 "+ \ 2를 다음으로 대체

,691.

하나의 생각; 당신은 당신의 URL 중 어떤 쿼리 문자열을 가지고 있습니까? 그렇다면 그들 중 누구라도 "http://someurl.com?http=somemoredatahttp://someurl.com?http=somemoredata"을 좋아합니까?

그렇다면 훨씬 더 복잡한 것이 필요할 것입니다.

1
http://www.example.com/apage.htmlhttp://www.example.com/apage.html 

사실 이것은 유효한 URL입니다. 그래서 당신은 그 중간에 'http : //'를 가지고있는 다른 어떤 URL도 괴롭히지 않도록 조심하고 싶을 것입니다.

"(https?://[^"]*)\1" 

(이것은 표준이 아닌 정규식 기능이지만, 가장 현대적인 구현이 있습니다.) HTML을 처리하기 위해 정규식을 사용하여

이 나쁜 : 당신은 역 참조를 사용할 수 있습니다 만 '두 배'URL을 감지하려면 생각. HTML은 regex에 의해 안정적으로 파싱 될 수 없다.

관련 문제