2013-01-13 1 views
0

가능한 중복 :
Parsing HTML NSRegularExpressionNSRegularExpression + 아이폰 OS + URL이

내가 같이있는 NSString 있습니다

NSString *string = @"<a href='http://john.com'>JOHN</a> http://john.com"; 

내가 구문 분석하는 정규식을 사용하려면 앵커 태그가 아닌 URL을 빼내어 앵커 태그에 넣을 수 있습니다.

NSRegularExpression *URLRegex = [NSRegularExpression 
           regularExpressionWithPattern:@"((https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])" options:NSRegularExpressionCaseInsensitive error:nil]; 

이 URL을 감지 않을뿐 아니라 문제가 앵커 태그의 URL을 감지합니다

나는 현재이 있습니다.

내가해야 할 일을 아는 사람이 있습니까? 감사합니다. .

는 UPDATE :

@"([^\'](https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|][^\'])" 

아래 알렉스에 의해 공급이 패턴은 개선된다. 그러나 만약이 문자열이 @ "http://example.com; john.com"; - example.com이 일치합니다. 어떻게 제외 할 수 있습니까? 기본적으로 나는 닻 꼬리표 안에 무엇이든 일치하는 것을 원하지 않는다.

답변

0

일반적으로 정규식이 작동하는 방식을 고려할 때 "무언가"가 아닌 "무언가"를 포착하려고하면 무언가를 잡으려고하는 것보다 훨씬 어렵습니다. 일부 sed 명령이나 스트립 구현 등을 통해 위의 내용을 쉽게 구현할 수 있습니다.

위와 같은 형식이 주어지면이 작업과 같은 것이되거나 너무 많은 대소 문자를 제외 할 것입니까?

"([^\'](https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|][^\'])" 

즉, URL이 따옴표 안에 들어 있지 않은지 확인합니다. 다음과 같은 경우 실패합니다.

"tom went to 'https://www.google.com' to find the..." 

하지만 당신에게 문제가 있다면 몰라요.

+0

잘 작동합니다. 그러나 만약 내가이 문자열을 가지고 있다면 "http://example.com http://john.com"; - http://example.com이 일치합니다. 어떻게 제외 할 수 있습니까? 기본적으로 나는 닻 꼬리표 안에 무엇이든 일치하는 것을 원하지 않는다. –