我需要解析包含xml注释的文件。具体来说,它是一个使用MS ///
惯例的c#文件。pyparsing - 解析xml注释
从这我需要拉出foobar
,或/// foobar
也是可以接受的。 (注 - 这仍然如果让XML都在同一行不行?)
testStr = """
///<summary>
/// foobar
///</summary>
"""
以下是我有:
import pyparsing as pp
_eol = pp.Literal("\n").suppress()
_cPoundOpenXmlComment = Suppress('///<summary>') + pp.SkipTo(_eol)
_cPoundCloseXmlComment = Suppress('///</summary>') + pp.SkipTo(_eol)
_xmlCommentTxt = ~_cPoundCloseXmlComment + pp.SkipTo(_eol)
xmlComment = _cPoundOpenXmlComment + pp.OneOrMore(_xmlCommentTxt) + _cPoundCloseXmlComment
match = xmlComment.scanString(testStr)
和输出:
for item,start,stop in match:
for entry in item:
print(entry)
但是我并没有在跨多线工作的语法方面取得太大的成功。
(注意 - 我在Python 3.2测试上面的示例,它的工作原理,但(按我的问题)不打印任何值)
谢谢!
@ PaulMcGuire的解决方案也可以工作,但这正是我应该使用的(这是最简单的......)Thansk! – mike