본문 바로가기
Python/Python FAQ

Python 파이썬 문자열.replace 정규 표현식 [중복], Python string.replace regular expression [duplicate]

by 베타코드 2023. 10. 9.
반응형

질문


나는 다음과 같은 형식의 매개변수 파일을 가지고 있습니다:

parameter-name parameter-value

매개변수는 어떤 순서로든 있을 수 있지만 한 줄에는 하나의 매개변수만 있습니다. 나는 한 매개변수의 parameter-value를 새 값으로 바꾸고 싶습니다.

나는 이전에 게시된 라인 교체 함수 를 사용하여 Python의 string.replace(pattern, sub)을 사용하여 라인을 교체하고 있습니다. 제가 사용하는 정규 표현식은 vim에서 작동하지만 string.replace()에서 작동하지 않는 것 같습니다.

다음은 제가 사용하는 정규 표현식입니다:

line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))

"interfaceOpDataFile"은 내가 바꾸려는 매개변수 이름입니다 (/i는 대소문자를 구분하지 않음). 새 매개변수 값은 fileIn 변수의 내용입니다.

Python이 이 정규 표현식을 인식하도록 할 방법이 있을까요? 그렇지 않다면 이 작업을 수행하는 다른 방법이 있을까요?


답변


str.replace() v2|v3 정규 표현식을 인식하지 못합니다.

정규 표현식을 사용하여 대체를 수행하려면 re.sub() v2|v3을 사용하세요.

예를 들면:

import re

line = re.sub(
           r"(?i)^.*interfaceOpDataFile.*$", 
           "interfaceOpDataFile %s" % fileIn, 
           line
       )

루프 안에서는 정규 표현식을 먼저 컴파일하는 것이 좋습니다:

import re

regex = re.compile(r"^.*interfaceOpDataFile.*$", re.IGNORECASE)
for line in some_file:
    line = regex.sub("interfaceOpDataFile %s" % fileIn, line)
    # 업데이트된 라인으로 무언가를 수행합니다
반응형

댓글