unc = r'\\foo\bar'
string1 = r'\\foo\bar'
string2 = r'\\\\foo\\bar'
if unc == string1:
print "I wish to make a complaint"
if re.match(string1, unc):
print "Ello miss"
if re.match(string2, unc):
print "Sorry I have a cold"
出力は次のとおりです。
I wish to make a complaint
Sorry I have a cold
re.match 操作はリテラル文字列を再エスケープするように見えるため、「Ello miss」は発生しません。
最初に文字列をリテラルとして設定するときにバックスラッシュを再度エスケープする必要がある理由を誰かが説明できますか?
構成ファイルに UNC パスのリストを保持したいのですが、その中で文字列をエスケープする必要はありません。コンパレーターは機能しますが、正規表現オプションを利用できると便利です。