我一直在尝试使用python,尝试捕获特定函数之间的特定变量。为了说明,让我举一个php文件的文件内容示例: -
public function executeSomething ()
{
$this->title = 'Edit something';
$this->action = 'Edit';
$this->headerTitle = 'Edit something';
return true;
}
public function executeSomethingEdit ()
{
if (strlen ($this->somethingElse) > 0)
{
$this->titleText = "Update";
$title = 'Edit something';
}
else
{
$this->titleText = "Create";
$title = 'Create something';
}
$this->title = $title;
$this->headerTitle = $title;
$this->formTitle = 'Something details'
return true;
}
python脚本现在需要做的是遍历此文件以搜索以“public function execute”开头的函数并获取大括号内的内容,即{}。我已经想出了python代码来实现这一点,即:
r = re.compile(r"public function execute(.*?)\(\).*?{(.*?)}", re.DOTALL)
当我在函数中进行验证时会出现问题,即if else语句,例如函数executeSomethingEdit中的语句。该脚本没有考虑if语句关闭大括号'}'下面的任何代码。因此,我需要进一步增强python代码以包含下面的函数声明,如下所示: -
r = re.compile(r"public function execute(.*?)\(\).*?{(.*?)}.*?public function", re.DOTALL)
目前此代码无效/产生我想要的结果。我需要特别使用python,因为我需要进一步分析{(。*?)}的内容。我对python很陌生,所以我希望有人可以指引我朝着正确的方向前进,或者至少告诉我我做错了什么。提前谢谢。
答案 0 :(得分:0)
如果输入PHP没有错误并且具有一致的缩进,则可以在右大括号之前检查非空格字符。
r = re.compile(r'public function execute(.*?)\(\).*?{(.*?)[^ ]}', re.DOTALL)