1

ファイルの行末にある文字列を一致させる必要があります。

ファイルの内容は次のとおりです。

   network1:
     type: Internal

最初の行を取得するためにこの正規表現を作成しましたが、何にも一致しません。私のコードの要件は、一致する文字列が変数に格納されていることに注意してください。したがって:

var1 = 'network1'
re.match('\s+%s:'%var1,line)

ただし、インタープリターでこの正規表現を確認すると、機能します。

>> import re 
>> line = '  network1:'
>> var1 = 'network1'
>> pat1 =  re.match('\s+%s:'%var1,line)
>> var2 = pat1.group(0)
>> print var2
     '  network1:'
4

1 に答える 1

3

re.searchmatch は文字列を最初から一致させようとするため、関数を使用する必要があります。

var1 = 'network1'
print(re.search(r'.*(\s+'+ var1 + r':)', line).group(1))

例:

>>> import re
>>> s = 'foo network1: network1:'
>>> var1 = 'network1'
>>> print(re.search(r'.*(\s+'+ var1 + r':)', s).group(1))
 network1:
>>> print(re.search(r'.*(..\s+'+ var1 + r':)', s).group(1)) # to check whether it fetches the last string or not.
1: network1:

だから、あなたは好きにするべきです

with open(file) as f:
    for line in f:
        if var1 in line:
            print(re.search(r'.*(\s+'+ var1 + r':)', s).group(1))
于 2015-05-16T14:13:15.327 に答える