nestedExpr
是否能保留换行符?
以下是一个简单的例子:
import pyparsing as pp
# Parse expressions like: \name{body}
name = pp.Word( pp.alphas )
body = pp.nestedExpr( '{', '}' )
expr = '\\' + name('name') + body('body')
# Example text to parse
txt = '''
This \works{fine}, but \it{
does not
preserve newlines
}
'''
# Show results
for e in expr.searchString(txt):
print 'name: ' + e.name
print 'body: ' + str(e.body) + '\n'
输出:
name: works
body: [['fine']]
name: it
body: [['does', 'not', 'preserve', 'newlines']]
正如您所看到的,第二个表达式(
\it{ ...
)的正文尽管有换行符,但仍然被解析,但我本来希望结果将每行内容存储在单独的子数组中。这种结果使得无法区分正文是单行还是多行。
name
的位置上,你可能会使用类似于pp.Word(pp.printables, excludeChars="{}")
的东西。你还可能需要使用pp.originalTextFor
进行包装,以获取原始字符串内容。欢迎来到pyparsing! - PaulMcG