2

のようないくつかのエスケープ文字で構成されている可能性のある文字列を解析しようとしています \" \"。例えば、

"this is an \"example\" of what I want to parse"

現在、次の解析ルールがありますが、エスケープ文字を処理できません\" QuotedString('"',multiline=True)

QuotedStringクラスにはescCharやescQuoteなどのオプションがありますが、そこで何を使用すればよいかわかりません。

私がやりたいことの完全な例

def test1():
    str_ = QuotedString('"',escChar='\\',multiline=True)
    decl = (Keyword("FIELD1") + str_ + ';') | \
        (Keyword("FIELD2") + str_ + ';') 
    G = OneOrMore(decl)

    s = """
FIELD1 "hello world";

FIELD2 "an example of \"what\" I want to parse";
"""

    print G.parseString(s)
    # Only print ['FIELD1', 'hello \nworld', ';']
4

1 に答える 1

1

QuotedStringのdocstringは次のようになります。

 |  __init__(self, quoteChar, escChar=None, escQuote=None, multiline=False, unquoteResults=True, endQuoteChar=None)
 |      Defined with the following parameters:
 |       - quoteChar - string of one or more characters defining the quote delimiting string
 |       - escChar - character to escape quotes, typically backslash (default=None)
 |       - escQuote - special quote sequence to escape an embedded quote string (such as SQL's "" to escape an embedded ") (default=None)
 |       - multiline - boolean indicating whether quotes can span multiple lines (default=False)
 |       - unquoteResults - boolean indicating whether the matched text should be unquoted (default=True)
 |       - endQuoteChar - string of one or more characters defining the end of the quote delimited string (default=None => same as quoteChar)
 |  

いくつかのインタラクティブなインタプリタ実験:

>>> import pyparsing
>>> s = r'''"this is an \"example\" of what I want to parse" '''
>>> pyparsing.QuotedString('"').parseString(s)
(['this is an \\'], {})
>>> pyparsing.QuotedString('"', escChar='\\').parseString(s)
(['this is an "example" of what I want to parse'], {})

すべてのクラスのコンストラクター引数が100%完全であるとは言えませんが、おそらく> 90%です。

于 2012-11-13T20:05:28.190 に答える