我试图使用Notepad ++ Search/Replace with Regular Expression将特定单词替换为这些单词的较短版本.
我使用以下正则表达式来匹配每个以er(但不是er一个单词)结尾的单词 - 并r使用反向引用将相匹配的单词替换为相同的单词减去结尾:
Find what: ([a-zA-z]+e)r
Replace with: $1
但它不会取代匹配的单词,即使它找到了它们.
但是,如果我将反向引用语法更改为:
Replace with: \1
一切正常.
为什么$1反向引用不起作用?
两种形式的后退有什么区别 - \1和$1?
我试图搜索每个有
bar-foo的单词,并将它们切换到foo-bar,
所以我写了find (\w+)-(\w+)
和替换$2-$1
,而不是写foo-bar,它写了$ 2- $ 1.
是,搜索模式中的正则表达式已启用.
似乎替换正则表达式不起作用并且字面意思
我正在调试一些代码,并想知道Perl正则表达式替换中$ 1和\ 1之间是否存在任何实际差异
例如:
my $package_name = "Some::Package::ButNotThis";
$package_name =~ s{^(\w+::\w+)}{$1};
print $package_name; # Some::Package
Run Code Online (Sandbox Code Playgroud)
以下这一行似乎功能相同:
$package_name =~ s{^(\w+::w+)}{\1};
Run Code Online (Sandbox Code Playgroud)
这两个陈述之间是否存在细微差别?它们在不同版本的Perl中表现不同吗?