繁体   English   中英

在python中匹配多行注释

[英]Matching multiline comment in python

我正在尝试匹配看起来像这样的多行/块注释

<# This is a multiline comment
This is a multiline comment
This is a multiline comment
This is a multiline comment
This is a multiline comment
#>

“ <##>”确定块注释的开始和结束。 我在应用程序和QRegExp函数中使用PySide,如下所示:

multiline_comment =    r'<#(.*)?#>'
comment_ml_syntax  = QtCore.QRegExp(Syntax.comment_ml_match)
comment_ml_format  = QtGui.QTextCharFormat()
comment_ml_format.setForeground(Colors.COMMENT_COLOR)

QRegExp似乎与多行注释不匹配。 我缺少某种选项或标志吗?

只需传递re.DOTALL标志并捕获开始标记和结束标记之间的所有内容即可。 re.DOTALL确保. 也匹配换行符。 并使用非贪婪量词? 确保您的匹配不超过一个评论

re.search(r'<#(.*?)#>', comment, re.DOTALL).group(1)

首先,如果是'(.*)?' 被认为是非贪婪的任何符合条件的比赛”。 它是贪婪匹配(任意匹配)(尽可能多),然后是可选的限定符(无效)。 这将从第一个“ <#”开始匹配,并且仅与第一个换行符之后的空格匹配。 然后匹配这些规范中的最后一个“#>”。 这是我的解决方案:

r"<#((?!#>)(.|\s))*#>"

它会抓住开瓶器,然后匹配该对中的任何文本,只要看起来不像是下一个字符集的字符更接近,最后匹配该字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM