Python string.replace 正規表現 [重複] 質問する

Python string.replace 正規表現 [重複] 質問する

次の形式のパラメータ ファイルがあります:

parameter-name parameter-value

parameter-valueパラメータは任意の順序で指定できますが、1 行に指定できるパラメータは 1 つだけです。1 つのパラメータを新しい値に置き換えたいです。

行置換機能を使用しています以前に投稿Pythonのstring.replace(pattern, sub)私が使用している正規表現は、たとえば vim では機能しますが、 では機能しないようですstring.replace()

私が使用している正規表現は次のとおりです。

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

"interfaceOpDataFile"置換するパラメータ名 (大文字と小文字を区別しない場合は /i) と、新しいパラメータ値が変数の内容になりますfileIn

Python にこの正規表現を認識させる方法はありますか? あるいは、このタスクを実行する別の方法はありますか?

ベストアンサー1

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)
    # do something with the updated line

おすすめ記事