2012-01-11 495 views
12

我使用Eclipse和记事本++进行更换多个文件(XML & JAVA)区分大小写字符串替换Eclipse或记事本+ +

我想,以取代[PP] RODUCT [MM]灰烬[FF]和[嗯]烬在一个单一的替代和保存的情况。

ProductMember -> FundMember 
productMember -> fundMember 
productmember -> fundmember 

使用捕获组很容易从成员保持M的情况,但我对P替换很无能。

感谢您的帮助!

+0

我不确定是否有可能用正则表达式做到这一点。为什么你需要在一次搜索和替换中完成这项工作? – 4ndrew 2012-01-11 17:45:06

+0

搜索和替换必须在10个文件夹中执行。在单个替代品中执行此操作会降低错误风险,因为我需要10次搜索和替换,而不是20次。 – jpboudreault 2012-01-11 17:53:28

+0

@leconcombreless在这种情况下,我建议使用脚本。如果可能的话,或者在IDE中重构。 – 4ndrew 2012-01-11 17:58:45

回答

18

提取的日食,你可以使用正则表达式保留情况下的操作:\ C。要解决你的例子,你应该搜索“Product”,替换为“\ CFund”(一定要勾选正则表达式选项)。这将用基金取代产品与基金和产品。

+0

如果这能起作用,那么肯定会出现这种情况。我只是在一个CamelCasedWord上试了一下,我想用AnotherCamelCasedWord替换它,尽管\ C它总是执行一个直接替换,而不是在它应该切换的情况下。 – user1283068 2017-11-28 12:33:07

+0

直到我意识到我已选中“区分大小写”框,取消选中替换后按预期工作后,我才得到此工作。 – codebox 2017-11-30 15:31:00

0

NP ++正则表达式是非常差的,你可以使用一个Perl的一行来完成这项工作:

perl -pi.back -e's{(productmember)}{ uc fundmember | (uc $1^$1) . (uc(substr $1, -1)^substr $1, -1) x (length($new) - length $1) }egi;' theFile 

perl faq6

相关问题