【发布时间】:2014-07-31 09:33:56
【问题描述】:
我需要解析用 PHP 编写的方法的注释。我写了一个正则表达式(见下面的简化示例)来搜索它们,但它没有按预期工作。它不是匹配/** 和*/ 之间的最短文本部分,而是匹配源代码的最大数量(以前的方法带有注释)。我确定我使用的是正确的.*? 非贪婪版本的*,并且我没有发现任何证据表明 DOTALL 将其关闭。请问可能是哪里出了问题?谢谢你。
p = re.compile(r'(?:/\*\*.*?\*/)\n\s*public', re.DOTALL)
methods = p.findall(text)
【问题讨论】:
-
对我来说很好。删除
re.DOTALL是否会使其突然再次起作用? -
您能include some sample data for
textin a triple-quoted string,这样我们可以将示例复制粘贴到解释器会话中,然后自己查看问题吗? (如果您将示例复制粘贴到解释器会话中,请确保示例数据显示问题。) -
举个例子会更好。
-
不,没有
re.DOTALL,它根本无法工作 - 什么也没找到。 -
\s也匹配\n字符。
标签: python regex search non-greedy