Python 的前缀 r"text" 的 Perl 对应字符串文字?
Perl's correspondent string literal for Python's prefix r"text"?
这个thread is about Python's string literal r
, while this is about Perl's one here。
但是,我不确定在 Perl 中是否存在 Python 的前缀 r
的等效命令。
如何在 Perl 的字符串文字中等效地替换 Python 的前缀 r?
未插入的引用运算符 q{}
将帮助您完成大部分工作。只有几个细微差别。
定界符
Python 原始字符串文字使用了四个定界符:
r"..."
和 r'...'
r"""..."""
和 r'''...'''
Perl 中的 q...
运算符有更多种类的分隔符
- 成对分隔符
q(...)
、q[...]
、q<...>
、q{...}
- 常规分隔符可以是任何其他非字母数字的 7 位 ASCII 字符:
q"..."
、q/.../
、q#...#
等
反斜杠
反斜杠字符 \
始终被解释为 Python 原始文字字符串中的文字反斜杠字符。它将也转义一个字符,否则该字符将被解释为字符串的结束定界符
r'Can\'t believe it\'s not butter' => Can\'t believe it\'s not butter
Perl q{...}
表达式中的反斜杠字符 \
也是文字反斜杠,但有两个例外:
反斜杠在分隔符前面
q<18 \> 17 \< 19> => 18 > 17 < 19
q#We're \#1# => We're #1
反斜杠在另一个反斜杠字符之前。在这种情况下,两个反斜杠字符的序列被解释为单个反斜杠。
q[single \ backslash] => single \ backslash
q[also a single \ backslash] => single \ backslash
q[double \\ backslash] => double \ backslash
q[double \\ backslash] => double \ backslash
有一种方法可以在 Perl 中创建真正的 "raw" 字符串:单引号 here-doc。
my $string = <<'EOS';
'"\foo
EOS
这将创建字符串 '"\\foo<em>NEWLINE</em>
.
(那么是否可以在 Python 中创建一个同时包含 '''
和 """
的原始字符串文字?)
这个thread is about Python's string literal r
, while this is about Perl's one here。
但是,我不确定在 Perl 中是否存在 Python 的前缀 r
的等效命令。
如何在 Perl 的字符串文字中等效地替换 Python 的前缀 r?
未插入的引用运算符 q{}
将帮助您完成大部分工作。只有几个细微差别。
定界符
Python 原始字符串文字使用了四个定界符:
r"..."
和r'...'
r"""..."""
和r'''...'''
Perl 中的
q...
运算符有更多种类的分隔符- 成对分隔符
q(...)
、q[...]
、q<...>
、q{...}
- 常规分隔符可以是任何其他非字母数字的 7 位 ASCII 字符:
q"..."
、q/.../
、q#...#
等
反斜杠
反斜杠字符
\
始终被解释为 Python 原始文字字符串中的文字反斜杠字符。它将也转义一个字符,否则该字符将被解释为字符串的结束定界符r'Can\'t believe it\'s not butter' => Can\'t believe it\'s not butter
Perl
q{...}
表达式中的反斜杠字符\
也是文字反斜杠,但有两个例外:反斜杠在分隔符前面
q<18 \> 17 \< 19> => 18 > 17 < 19 q#We're \#1# => We're #1
反斜杠在另一个反斜杠字符之前。在这种情况下,两个反斜杠字符的序列被解释为单个反斜杠。
q[single \ backslash] => single \ backslash q[also a single \ backslash] => single \ backslash q[double \\ backslash] => double \ backslash q[double \\ backslash] => double \ backslash
有一种方法可以在 Perl 中创建真正的 "raw" 字符串:单引号 here-doc。
my $string = <<'EOS';
'"\foo
EOS
这将创建字符串 '"\\foo<em>NEWLINE</em>
.
(那么是否可以在 Python 中创建一个同时包含 '''
和 """
的原始字符串文字?)