感谢大家之前的帮助!我对 Perl 中的 RegExp 有疑问
我的问题是..
我知道,匹配时你可以写 m// 或 // 或 ##(如果你使用这个,必须包括 m 或 s)。让我感到困惑的是一本关于我所拥有的转义字符的书籍示例。我相信大多数人都会转义很多字符,作为程序工作的一种可靠方式,不会丢失元字符,例如:\@ 当在电子邮件地址中寻找匹配 @ 时。
这是我的问题,我知道这个脚本的作用:
$date= "15/12/99"
$date=~ s#(\d+)/(\d+)/(\d+)#$1/$2/$3#; << why are no forward slashes escaped??
print($date);
然而,我后面的例子显示它被重写为(我也理解并且他们被逃脱了)
$date =~ s/()(\d+)\/(\d+)\/(d+)/$2\/$1\/$3; <<<<which is escaping the forward slashes.
我知道斜线或散列是程序员的偏好和它们的用途。我不明白的是为什么第二个例子,逃脱了斜线,但第一个没有 - 我已经尝试过,它们都是双向的。没有用散列转义斜线?更令人困惑的是,查看我之前也有的另一本书示例,再次使用哈希,它们也转义了 @ 符号。
if ($address =~ m#\@#) { print("That's an email address"); }
或类似的东西
那么,您从不使用哈希或斜杠的情况中逃脱了什么?我知道您必须转义元字符才能匹配它们,但我很困惑。