[英]Python regex replace, with lambda function, overwriting non-capturing groups
我在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新手:)
谢谢!
_l = re.sub(r'(?:\=|\=\>|\()\s*(true|false|null)\s*(?:\)|\;|\,)', lambda pattern: pattern.group(0).upper(), _l)
这应该做。 但是,正如其他人所说,正则表达式不适用于PHP。
对于上面的示例,可以只替换每一个= true;
:
php_script.replace('= true;', '= TRUE;')
并且类似地满足其他需求。
但是,正如@elusive指出的那样,正则表达式实际上并不适合解析PHP文件。 一个好的文本编辑器可以做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.