我在Python中有这个代码(其中_l
是我正在迭代的一些PHP代码的每一行):
_l = re.sub(r'(?:\=\s*|\=\>\s*|\(\s*|\s)(true|false|null)(?:\s*\)|\s*\;|\s*\,)', lambda pattern: pattern.group(1).upper(), _l)
它的目的是将某些原语替换为大写,就像这样(在PHP中):
$variable = true; // Old
$variable = TRUE; // New
但相反,我明白了:
$variable TRUE
基本上我只想替换捕获的组并忽略两个非捕获组。这可能是非常明显的,但我是一个Python新手:)
谢谢!
答案 0 :(得分:2)
_l = re.sub(r'(?:\=|\=\>|\()\s*(true|false|null)\s*(?:\)|\;|\,)', lambda pattern: pattern.group(0).upper(), _l)
这应该做。但是,正如另一个所说,正则表达式不适合PHP。
答案 1 :(得分:1)
对于上面的示例,可以只替换每个= true;
:
php_script.replace('= true;', '= TRUE;')
同样适用于其他需求。
但是,正如@elusive指出的那样,正则表达式并不适合解析PHP文件。一个好的文本编辑器可以做到这一点。