使用Perl的regexp中的卷曲括号

ale*_*xis 4 regex perl

只是试图让我的头围绕regexps.以下是代码的一部分.它逐行读取文件,它具有以下表达式,可以在任一端触发空白行.

\匹配行的开头
\ s +一个或多个空格
\ z匹配行的结尾

while (<$fh>) 
{
  s{\A\s+}{};
  s{\s+\z}{};
}
Run Code Online (Sandbox Code Playgroud)

我正在努力的部分是大括号.我能找到的唯一文件表明它们可以作为乘数.我读了s {\ A\s +} {}; 如果开始行和白色空格替换为空,但这是我的猜测.我希望确认这个以及大括号在此正则表达式中的含义

TLP*_*TLP 6

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)