带感叹号的Perl正则表达式

kur*_*uki 5 regex perl

你如何定义/解释这个Perl正则表达式:

$para =~ s!//!/!g;
Run Code Online (Sandbox Code Playgroud)

我知道s手段搜索,并且g意味着全局(搜索),但不确定感叹号!和额外斜线如何/适合(因为我认为图案看起来更像s/abc/def/g).

zel*_*lio 10

Perl的正则表达式运算符s,m以及tr(认为它不是一个真正的正则表达式运算符)允许你使用任何符号作为您的分隔符.

这意味着你不必使用/你可以使用,就像你的问题一样!

# the regex
s!//!/!g
Run Code Online (Sandbox Code Playgroud)

意味着搜索和替换的所有实例'//''/'

你可以写同样的东西

s/\/\//\/g 
Run Code Online (Sandbox Code Playgroud)

要么

s#//#/#g
Run Code Online (Sandbox Code Playgroud)

要么

s{//}{/}g
Run Code Online (Sandbox Code Playgroud)

如果你真的想要,但你可以看到第一个,所有的反斜杠,很难理解,更麻烦.

更多信息可以在perldoc的perlre中找到