好的,所以我做了以下正则表达式替换:
Input: ([Ll])ocation
Output: \1abel
将Location
替换为Label
,将location
替换为label
。但是,如果我想将location
替换为geocode
而将Location
替换为Geocode
,我可以使用一个正则表达式吗?
我正在搜索并在目前的记事本++中替换,但我在多个正则表达式方言中遇到了这个问题。
答案 0 :(得分:1)
你在这里:
#!/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
N.B。这段代码使用实验性'评估任何Perl代码'零宽度断言。这只是因为你问过它,我会不建议使用这样的表达式,做几次替换要好得多。我真的怀疑Notepad ++是否支持它。
答案 1 :(得分:1)
EditPad Pro将会这样做。它并不是一个真正的正则表达式功能,只是一些支持搜索和替换的工具。所述工具通常由正则表达式提供动力,但这不是必需的;事实上,我认为正则表达式在实现这样的功能方面没有多大帮助。
答案 2 :(得分:0)
在perl:
echo Location | perl -pe 's/(l)ocation/$1^lc($1)^"geocode"/ei'
Geocode