2017-11-04 1 views
3

저는 정규 표현식을 배우려는 파이썬 사용자이며 OK 일 것 같은 Udemy에 좋은 좋은 코스가 있습니다. 그러나 그것은 파이썬 코스도 파이썬 정규 표현 코스도 아닙니다.정규 표현식은 모든 프로그래밍 언어에서 동일합니까?

정규 표현식은 모든 프로그래밍 언어에서 동일합니까?

나는 파이썬에서 re 패키지를 사용할 때와 똑같은 구문을 사용하겠습니까? 그들에 변화가

+0

각 언어마다 RegEx 모듈의 모든 변환이 동일하게 생성되지는 않습니다. 따라서 PHP의 RegEx와 VB.NET의 RegEx가 다른 이유는 무엇입니까? 파이썬의 RegEx와는 다르게 적용됩니다. –

+0

정규 표현식을 규칙적으로 사용합니다. 즉, 일반적으로 어디에나 동일합니다. –

+0

짧은 답변은 "아니오"입니다. 물론 어떤 과정에서든지 매우 유사 할 수 있지만, 특히 기초적인면에서 (따라서 과정이 확실히 적용될 수 있습니다). 가장 쉬운 방법은 [docs] (https://docs.python.org/3/library/re.html)를 통해 파이썬에서 무엇이 무엇인지 확인하는 것입니다. –

답변

1

상당한있다 구현간에 크고 미묘한 차이.

(2.7) regex howto에 따르면 파이썬의 re 모듈은 Perl 정규 표현식을 기반으로합니다. 정규식 구문은 거의 같습니다. Perl에서 사용은 매우 다릅니다. 더 컴팩트 (또는 귀하의 의견에 따라 더 읽을 수없는 :-).

또한 어떤 플래그가 사용되는지에 따라 파이썬 2와 3 사이의 정규식에 차이가 있음을 명심하십시오. 간단히 말해서 파이썬 2가 유니 코드 문자열을 처리하는 동안 상자 밖에서 파이썬 2 정규 표현식이 ASCII 문자열을 처리한다고 말할 수 있습니다.

파이썬 정규 표현식에서

*+ 예선이 욕심을, 즉 그들이 가능한 한 많은 텍스트와 일치합니다. 그것은 직관적이지 않은 결과를 만듭니다. 예를 들어 꺾쇠 괄호 사이의 텍스트를 검색하려고한다고 가정합니다. <.*>으로 생각할 수도 있습니다. 그러나 관찰 :

In [1]: import re 

In [2]: re.findall('<.*>', '<a> <b> <c>') 
Out[2]: ['<a> <b> <c>'] 

당신은 그들이 아닌 욕심 만들기 위해 ?을 추가해야합니다.

In [3]: re.findall('<.*?>', '<a> <b> <c>') 
Out[3]: ['<a>', '<b>', '<c>'] 

명시 적으로 말하면 끝 문자 이외의 문자를 찾아야합니다.

In [4]: re.findall('<[^>]*>', '<a> <b> <c>') 
Out[4]: ['<a>', '<b>', '<c>'] 

Linux 및 * BSD와 같은 유닉스 계열 시스템은 일반적으로 많은 유틸리티에서 POSIX 정규 표현식을 지원합니다. 그 두 가지 맛, 기본 및 확장. 기본 POSIX 정규 표현식은 분기 메타 문자 |을 지원하지 않습니다.

+0

매우 잘 설명되어 있습니다. 감사 – Herc01

3

...

당신에게 (파이썬 포함) 몇 가지 일반적인 언어에 대한 표현식을 테스트 할 수있는 방법을 제공합니다이 사이트 ...

https://regex101.com/