首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于正则表达式的Python原始字符串表示法的单引号、双引号或三元双引号?

问用于正则表达式的Python原始字符串表示法的单引号、双引号或三元双引号?
EN

Stack Overflow用户
提问于 2014-06-08 19:41:28
回答 2查看 2K关注 0票数 2

我想知道什么时候使用Python的正则表达式的原始字符串表示法:单引号、双引号还是三重双引号?

来自https://docs.python.org/2/howto/regex.html

当与三引号字符串一起使用时,可以更整洁地格式化REs: pat =re.compile(r“”\s* # Skip前导空格(?P^:+) #报头名称\s*:#空格,和冒号(?P *?)#标题的值-*?用于#丢失以下尾随空格\s*$ #尾部空格到行尾“,re.VERBOSE)

我用双引号代替了三重双引号,用单引号代替了三重双引号,但两者都不管用。

然而,本文还在其他示例中使用单引号和双引号:

代码语言:javascript
复制
r"\w+\s+\1"

r'(\b\w+)\s+\1'

我想知道为什么?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-08 20:00:47

原始字符串的好处

对于原始字符串,不必担心字符串中的反斜杠,如下所示:

代码语言:javascript
复制
r"\d"

如果没有r,字符串将无法以您预期的状态到达引擎。你必须避开反斜杠。

三元报价的好处

使用三元引号(正如其他人所说)是字符串可以跨越多行,如下所示:

代码语言:javascript
复制
r"""(?x)   # let's write this complex regex in free-space mode!
\d         # match a digit
$          # at the end of a line
"""
票数 7
EN

Stack Overflow用户

发布于 2014-06-08 20:50:40

三元引号示例演示了详细模式,其中空格从regex中剥离,您可以使用空白来提高可读性。奇怪的是,这个例子没有提到关于冗长的另一部分:它忽略了#到行尾的所有内容作为注释。由于三元引号保留了换行符,regex会看到多行在行尾有注释。

代码语言:javascript
复制
>>> print (r"""
...  \s*                 # Skip leading whitespace
...  (?P<header>[^:]+)   # Header name
...  \s* :               # Whitespace, and a colon
... ...
... """)

 \s*                 # Skip leading whitespace
 (?P<header>[^:]+)   # Header name
 \s* :               # Whitespace, and a colon
...

>>>

如果您只是使用了一串单引号来连接字符串,它只会看到一行很长的注释。

代码语言:javascript
复制
>>> print (
... r" \s*                 # Skip leading whitespace"
... r" (?P<header>[^:]+)   # Header name"
... r" \s* :               # Whitespace, and a colon"
... r"...")
 \s*                 # Skip leading whitespace (?P<header>[^:]+)   # Header name \s* :               # Whitespace, and a colon...
>>>

可以将\n添加到每个字符串的末尾,以返回到多行字符串。

至于单句双引号,这只是个人喜好,对python或regex来说并不重要。如果引用的字符串包含",那么“引用就方便了,反之亦然。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24110104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档