2010-07-19 198 views
1

我有一个关于Perl的问题。Perl正则表达式用正则表达式的子串替换字符串

假设我在文件中的以下行:

DoMatchLong ("ThisIsMyVariable", lThisIsMyVariable); 

我想cp_const_ThisIsMyVariable

取代 “ThisIsMyVariable”

所以我的目标是:

DoMatchLong ( cp_const_ThisIsMyVariable, lThisIsMyVariable); 


$count = s/(?<=")\w+(?=")/const_cmd_cp_$&/gx; 

导致DoMatchLong ( "cp_const_ThisIsMyVariable", lThisIsMyVariable);

那么正确的解决方案是什么?

回答

5
$count = s/"(\w+)"/const_cmd_cp_$1/gx; 

将引号拉入匹配中,然后使用捕获组来获取引号之间的实际文本,同时仍然替换它们。

+1

非常感谢!你的回答比我理解你的解决方案要快。我喜欢分组正则表达式的可能性! – Menn 2010-07-19 06:55:50

+5

如果您尝试了解决方案并且适用于您,您可能应该将问题标记为已回答 – masonk 2010-07-19 12:46:59