2017-03-08 14 views
3

정규식이있는 첫날입니다. 나는 공식화하는데 도움이 필요하다. A-Z a-z 0-9 - . _ ~ () ' ! * : @ , ; + ?안전한 문자를 허용하는 정규식

그리고 실제로 +?은 안전 꽤 그렇지 않으면 URL 내에서 사용했을 때 다음과 같은 사양에 따르면, 도메인 이름 이외의 다른 안전 문자 집합입니다.

위의 문자 집합을 정규식으로 표현하는 방법 (즉,이 문자 만 허용되며 다른 모든 문자는 제외됨)

나는 regexr.com을 사용했다. 지금까지 시행 착오를 통해 ([A-Z,a-z,0-9,+-])\w+.을 작성했습니다. 이는 부적절합니다. 누군가가 올바른 정규식을 공식화하는 데 도움이 될 수 있습니까? Btw 나는 파이썬 2.7을 사용한다.

+2

일치시킬 패턴은 무엇입니까? – putonspectacles

답변

2
r"^[A-Za-z0-9._~()'!*:@,;+?-]*$" 

이것은 안전한 문자로 이루어진 문자열에만 일치한다.

+0

또한 빈 문자열과 일치합니다. 수정해서는 안됩니다. –

+0

정말 사용 사례에 따라 다릅니다. 빈 문자열에는 안전하지 않은 문자가 포함되어 있지 않으므로 일치시키려는 의도 일 수 있습니다. 물론 *를 +로 바꾸십시오. 물론 – Denziloe

+1

, 나는 알고있다. :) –

2

정규식을 사용하여 문자열의 단일 문자를 테스트하지 않아도됩니다.

나는 str.isalnumall을 사용하거나 허용되지 않은 alphanums에 대해 확인 것 : (빈 문자열이 유효 URL을하지 않은) x이 비어 있지

x and all(x.isalnum() or x in "._~()'!*:@,;+?-" for x in s) 
  • 테스트 경우
  • 테스트를 isalnum() 첫번째 때문에이 아마도 기호보다 글자가 많으므로 조금 더 빨라질 것입니다.)
관련 문제