繁体   English   中英

Python正则表达式替换为lambda函数,覆盖非捕获组

[英]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.

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