将正则表达式添加到yaml python中

时间:2012-07-05 09:49:37

标签: python regex yaml

有没有办法使用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']

1 个答案:

答案 0 :(得分:2)

好吧,看起来问题是你选择代表这个正则表达式的标量类型。如果你嫁给了标量符号(yaml strings),你需要使用双引号标量和转义码来表示它所扼杀的特殊字符。所以,你的yaml应该是这样的:

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

我只是逃脱了它所窒息的角色以保持一些可读性,但是你可能需要逃避额外的角色,这取决于它是否会引发更多错误。此外,您可以使用unicode转义码。这看起来像这样:

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

我对你的知识有点了解,所以我不知道如何在yaml中维护特殊字符及其可读性。根据我对yaml文档的粗略扫描,这是我能找到的最好的。