1

所以,我搜索了一段时间,找不到任何东西,所以我决定求助于 SO 的专家来帮助我澄清发生了什么。

我正在学习 Python,在学习正则表达式的同时,我遇到了一些我不太明白的有趣语法。在此示例中,定义了一个函数,该函数在输入参数上运行正则表达式,将匹配的整数作为浮点数返回,或者如果输入与看起来像数字的内容不匹配,则抛出异常:

import re
def getNumber(token):
  r'-?[1-9][0-9]*.?[0-9]*'
  return float(token)

这个函数可以这样调用:

print getNumber('123.123')
print getNumber('123.123')+40

这将输出:

123.123
163.123

我试图了解这是如何发生的机制。我知道我们正在通过调用 r'STRING' 来声明一个正则表达式对象,但不知何故,只是声明该正则表达式会导致令牌参数也被传递到表达式中。这是具有明确包含称为“令牌”参数的函数的特征吗?是否存在与多个参数相关的行为?似乎这里已经做了一些工作来提供 python 语法,我只想知道它是如何工作的以及将来如何使用它的细节。将我指向文档会很棒,因为我找不到有关该主题的任何内容。

4

1 回答 1

5

此函数没有在输入上运行正则表达式......它正在调用float将输入转换为浮点数的输入。函数上的“正则表达式”只不过是一个文档字符串。

请注意,r"this is a string"只需创建一个与正则表达式无关的“原始字符串”("\t"是制表符,r"\t"而是文字字符'\''t')。

于 2012-09-11T15:46:42.007 回答