중괄호로 묶은 텍스트의 인스턴스를 중괄호의 내용으로 바꾸고, 빈 중괄호 쌍만 남겨두고 Python 함수를 작성하려고합니다. 예 :Python regex - 대괄호로 묶은 텍스트를 대괄호로 바꿉니다.
foo {} bar {baz}
은 foo {} bar baz
이됩니다.
일치하도록 만든 패턴은 {[^{}]+}
입니다. 즉, 괄호로 묶은 중괄호 (중첩하는 일치를 방지하기 위해)가 포함되어 있지 않은 텍스트입니다.
확실한 해결책은 내 패턴 re.sub
을 사용하는 것입니다, 그리고 내가 \g<0>
와 일치하는 텍스트를 참조 할 수 있음을 발견했습니다
>>> re.sub("{[^{}]+}", "A \g<0> B", "foo {} bar {baz}")
'foo {} bar A {baz} B'
은 그래서 아무 문제 없습니다. 그러나, 나는 참조 된 텍스트에서 대괄호를 다듬는 방법에 붙어있다. 나는 대체 문자열의 범위를 적용하려고하는 경우 : 범위가 \g<0>
전에 적용됩니다
>>> re.sub("{[^{}]+}", "\g<0>"[1:-1], "foo{}bar{baz}")
'foo{}barg<0'
가 일치하는 텍스트로 확인
하고는 특별한을 갖지 않는, 단지g<0
떠나,
\
을 선도하고
>
후행 트림 의미. 아무것도 변경하지 않았다, 당연히,
def trimBraces(string):
return string[1:-1]
을하지만 :
는 또한 트리밍을 수행하는 함수를 정의했습니다.
>>> re.sub("{[^{}]+}", trimBraces("\g<0>"), "foo{}bar{baz}")
'foo{}barg<0'
무엇이 여기에 있습니까? 미리 감사드립니다.
간단합니다. 정말 고마워! – halbrd