尝试用"/"替换"////"不起作用

Aho*_*tbi -4 string perl replace

我需要用"/"替换所有出现的"////".

我有以下代码,但它不起作用:

$res =~ s/\/\/\/\//\//g;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dav*_* W. 9

许多初学者没有意识到的一件事是你不必使用斜杠作为正则表达式分隔符.在您的情况下,简单地切换到另一个角色更容易.这避免了所谓的丘陵和山谷的影响:

因此,而不是:

$res =~ s/\/\/\/\//\//g;
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

$res =~ s#////#/#g;
Run Code Online (Sandbox Code Playgroud)

当正则表达式中涉及斜杠时,通常使用英镑符号(也称为锐符号,数字符号或octothorps),因为正弦符号在正则表达式语法中没有任何特殊含义,并且通常在语法中看不到.但是,您几乎可以使用任何您想要的东西.在这种特殊情况下,括号也很好,因为它们不在正则表达式中,可能更容易阅读:

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

请注意您如何匹配括号.这(标志着一个开始,并)标志着结束.方括号([...])和花括号('{{}})也是如此.只记得选择一些尚未出现在正则表达式中的东西.

顺便说一句,你的例子中的正则表达式适合我.也许您在程序中正确错误地输入了它?您的程序编辑器是否使用语法突出显示?

你得到的错误是什么?你说它不起作用.你的意思是它没有编译,或者它没有改变你认为它应该改变的东西?您是否尝试编写示例程序以查看它是否在简化的情况下工作?你有use warningsuse strict在你的计划?这些可以帮助您找到可能输错的地方.