区分大小写的替换为使用正则表达式进行不区分大小写的搜索

时间:2010-01-27 16:21:44

标签: regex case

好的,所以我做了以下正则表达式替换:

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

Location替换为Label,将location替换为label。但是,如果我想将location替换为geocode而将Location替换为Geocode,我可以使用一个正则表达式吗?

我正在搜索并在目前的记事本++中替换,但我在多个正则表达式方言中遇到了这个问题。

3 个答案:

答案 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)

如果您在替换时选择“Adapt Case”选项,

EditPad Pro将会这样做。它并不是一个真正的正则表达式功能,只是一些支持搜索和替换的工具。所述工具通常由正则表达式提供动力,但这不是必需的;事实上,我认为正则表达式在实现这样的功能方面没有多大帮助。

答案 2 :(得分:0)

在perl:

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