2010-01-27 56 views
3

行,所以我做了以下的正則表達式替換替換爲不區分大小寫:區分大小寫與正則表達式

Input: ([Ll])ocation 
Output: \1abel 

替換LocationLabellocationlabel。但是,如果我想用geocodeLocation替換locationGeocode,我可以使用單個正則表達式嗎?

我正在做一個搜索,並在此刻替換記事本++,但我有多個正則表達式方言的這個問題。

+1

做兩個單獨的區分大小寫替換不是更容易嗎? – SLaks 2010-01-27 16:28:53

回答

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 

注:這段代碼使用實驗'評估任何Perl代碼'零寬度斷言。這裏只是因爲你問了這個問題,我會而不是推薦使用這樣的表達式,這樣做好幾次替換。我真的懷疑Notepad ++支持它。

0

在Perl中:

echo Location | perl -pe 's/(l)ocation/$1^lc($1)^"geocode"/ei' 
Geocode 
1

EditPad Pro會做,如果你選擇 「適應情況」 選項,同時更換。這不是一個真正的正則表達式功能,只是一些由搜索和替換工具支持的功能。所述工具通常由正則表達式驅動,但這不是必需的;實際上,我認爲正則表達式在實現這樣一個功能方面不會有太大的幫助。