只是试图让我的头围绕regexps.以下是代码的一部分.它逐行读取文件,它具有以下表达式,可以在任一端触发空白行.
\匹配行的开头
\ s +一个或多个空格
\ z匹配行的结尾
while (<$fh>)
{
s{\A\s+}{};
s{\s+\z}{};
}
Run Code Online (Sandbox Code Playgroud)
我正在努力的部分是大括号.我能找到的唯一文件表明它们可以作为乘数.我读了s {\ A\s +} {}; 如果开始行和白色空格替换为空,但这是我的猜测.我希望确认这个以及大括号在此正则表达式中的含义
devnull已经给出了正确答案,但我觉得还有更多要补充而不是评论.
s{}{}只是s///替换运算符,但与不同的分隔符一起使用.你可以使用任何字符作为分隔符,包括不同类型,例如平衡括号s#foo#bar#,s[foo][bar].
您可以使用它来避免在匹配的字符串中转义分隔符.比如匹配路径时:
s#/foo/bar/baz#/foo/baz/bax#
Run Code Online (Sandbox Code Playgroud)
使用默认的斜杠分隔符看起来比等效的更好/:
s/\/foo\/bar\/baz/\/foo\/baz\/bax/
Run Code Online (Sandbox Code Playgroud)
老实说,这很令人困惑.
在你的情况下,没有真正的理由使用不同的分隔符,所以我认为替换最好用原始分隔符编写:
s/\A\s+//
s/\s+\z//
Run Code Online (Sandbox Code Playgroud)