1

Pythonを使用してYAMLでこの正規表現を保存して読み取る方法はありますか:

regular: /<title [^>]*lang=("|')wo("|')>/ 

誰にもこれに対するアイデアや解決策がありますか?

次のエラーがあります。

    % ch.encode('utf-8'), self.get_mark())
yaml.scanner.ScannerError: while scanning for the next token
found character '|' that cannot start any token
  in "test.yaml", line 10, column 49

私のコード:

def test2():
    clueAppconf = open('test.yaml')
    clueContext = yaml.load(clueAppconf) 
    print clueContext['webApp']
4

1 に答える 1

2

問題は、この正規表現を表すために選択したスカラーのタイプにあるようです。スカラー (yaml 文字列) と結婚している場合は、二重引用符で囲まれたスカラーと、それが詰まる特殊文字のエスケープ コードを使用する必要があります。したがって、yaml は次のようになります。

regular: "/<title [^>]*lang=("\x7C')wo("\x7C')>/" 

読みやすさを維持するために、窒息していた文字のみをエスケープしましたが、さらにエラーがスローされるかどうかに応じて、追加の文字をエスケープする必要がある場合があります。さらに、Unicode エスケープ コードを使用することもできます。それは次のようになります。

regular: "/<title [^>]*lang=("\u007C')wo("\u007C')>/"

私は yaml の知識が少し不足しているため、特殊文字とその読みやすさを yaml で維持する方法がわかりません。yaml ドキュメントの大まかなスキャンに基づいて、これは私が見つけることができる最高のものでした。

于 2012-07-05T10:32:18.530 に答える