programing

이름 있는 정규 표현식 그룹(?)입니다.pregexp): "P"는 무엇의 약자입니까?

copyandpastes 2022. 9. 13. 23:46
반응형

이름 있는 정규 표현식 그룹(?)입니다.pregexp): "P"는 무엇의 약자입니까?

Python의(?P<group_name>…) 구문을 사용하면 일치하는 문자열을 이름으로 참조할 수 있습니다.

>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'

"P"는 무엇의 약자입니까?는 공식 서류에서 힌트를 찾을 수 없었다.

학생들이 이 구문을 기억하는 데 도움이 되는 아이디어를 얻고 싶습니다."P"가 무엇을 의미하는지 알아두면 도움이 될 것입니다.

우리 모두 추측하고 있으니, 내 추측을 말해주지.파이썬의 약자인 줄 알았는데꽤 바보같이 들릴지도 모르지만--뭐, Python을 위한 P?!하지만 변명을 하자면, 는 이 말을 어렴풋이 기억하고 있었다.

제목:regex 구문 확장자 할당(?P...)

송신원: Guido van Rossum (gui...)@CNRI.Reston.Va.US)

일시 : 1997년 12월 10일 오후 3시 36분 19초

Perl 개발자(Perl 언어를 개발하는 개발자)에게 이례적인 요청이 있습니다.이게 맞았으면 좋겠어요.Python string-sig를 참조하는 이유는 Python string-sig가 제가 여기서 논의하는 대부분의 작업의 기원이기 때문입니다.

Python을 알고 계실 겁니다.저는 Python의 크리에이터이며, 올해 말까지 다음 "메이저" 버전인 Python 1.5를 출시할 예정입니다.앞으로 Python과 Perl이 공존할 수 있기를 바랍니다. 교차수분이 두 언어 모두에 도움이 될 것입니다.(Perl 5에 오브젝트를 추가할 때 래리가 Python을 잘 봤다고 생각합니다.O'Reilly는 두 언어에 관한 책을 출판합니다.)

아시다시피 Python 1.5는 Perl의 구문에 더 가까운 새로운 정규 표현 모듈을 추가합니다.Python의 구문 내에서 가능한 한 Perl 구문에 접근하려고 했습니다.그러나 regex 구문에는 (?P)로 시작하는 Python 고유의 확장자가 몇 개 있습니다.현재 두 개 있습니다.

(?P<foo>...)는 " " " 입니다.
그룹에 의해 매칭된 는, 매칭이 실행된 후에, 심볼 그룹명 「foo」를 개입시켜 액세스 할 수 있습니다.

(?P=foo) "foo" 라는 합니다.되는 경우를 하고 \등에합니다.
전화번호가 아닌 이름으로요

이 Python 고유의 확장이 향후 Perl regex 구문에 대한 Perl 확장과 충돌하지 않기를 바랍니다.만약 (?P)를 사용할 예정이 있다면, 가능한 한 빨리 알려주시면 경합을 해결할 수 있습니다.그렇지 않으면 (?P 구문은 Python 고유의 구문 확장자를 위해 영구적으로 예약될 수 있습니다.) (확장자 레지스트리 같은 것이 있습니까?)

래리 월은 이렇게 대답했다.

[...] 현재 레지스트리는 없습니다.당신의 요청은 외부 perl5 포터로부터의 첫 번째 요청이기 때문에 대역폭이 매우 낮습니다.(죄송합니다만, 지난주에는 더 낮았습니다.뉴욕에서 인터넷 월드를 다녀왔습니다.)

어쨌든, 내가 아는 한, 당신은 확실히 나의 축복으로 'P'를 가지고 있을지도 모릅니다. (분명히 Perl은 이 시점에서 'P'가 필요하지 않습니다.) [...]

P의 원래 선택은 패턴?플레이스 홀더?펭귄이요? 하지만 왜 항상 파이톤을 연상시키는지 아시겠죠?(1) 규칙적인 표현을 좋아하지 않고 가능한 한 피하는 것, (2) 15년 전에 있었던 일을 생각하면 좀 이상하다.

Python 확장.Python Docs에서:

Perl 개발자에 의해 선택된 솔루션은 (?...)를 확장 구문으로 사용하는 것입니다.괄호 바로 뒤에 구문 오류가 있었습니다.이는 반복할 것이 없기 때문에 호환성 문제가 발생하지 않았습니다.? 바로 뒤의 문자는 사용 중인 확장자를 나타내므로 (?=foo)와 (?:foo)는 다른 것입니다(하위 표현식 foo를 포함하는 비확장 그룹).

Python은 Perl의 여러 확장자를 지원하며 Perl의 확장 구문에 확장 구문을 추가합니다.물음표 뒤의 첫 번째 문자가 P라면 Python 고유의 확장자임을 알 수 있습니다.

https://docs.python.org/3/howto/regex.html

패턴!그룹명은 나중에 regex에서 사용하기 위해 (sub) 패턴으로 지정합니다.이러한 그룹의 사용 방법에 대한 자세한 내용은 여기를 참조하십시오.

언급URL : https://stackoverflow.com/questions/10059673/named-regular-expression-group-pgroup-nameregexp-what-does-p-stand-for

반응형