好的,所以我做了以下正则表达式替换:
Input: ([Ll])ocation
Output: \1abel
替换Location
为Label
和。location
_ label
但是,如果我想location
用geocode
和Location
替换Geocode
,我可以用一个正则表达式来做到这一点吗?
我目前正在notepad ++中进行搜索和替换,但我在多种正则表达式方言中遇到了这个问题。
如果您在更换时选择“Adapt Case”选项, EditPad Pro将执行此操作。这不是真正的正则表达式功能,只是一些搜索和替换工具支持的功能。所述工具通常由正则表达式驱动,但这不是必需的;事实上,我认为正则表达式对实现这样的功能没有多大帮助。
给你:
#!/usr/bin/perl -w
$str1 = 'Location Loc10';
$str2 = 'location Loc10';
$str1 =~ s/(L(?{ $g = 'G'; }) | l(?{ $g = 'g'; }) )ocation/${g}eocode/x;
print "$str1\n"; # prints Geocode Loc10
$str2 =~ s/(L(?{ $g = 'G'; }) | l(?{ $g = 'g'; }) )ocation/${g}eocode/x;
print "$str2\n"; # prints geocode Loc10
注意这段代码使用实验性的“评估任何 Perl 代码”零宽度断言。它在这里只是因为你问过它,我不建议使用这样的表达方式,最好做几个替换。我真的怀疑 Notepad++ 是否支持它。
在 perl 中:
echo Location | perl -pe 's/(l)ocation/$1^lc($1)^"geocode"/ei'
Geocode