什么剂量(。*)在python中意味着什么?

时间:2011-10-22 02:23:58

标签: python-3.x

我正在阅读一本学习python的书,这是其中一个例子,所以我很想知道这是否意味着什么。

2 个答案:

答案 0 :(得分:1)

(。*)并不代表Python中的任何特定内容。但是,当字符串的一部分时,它可能对某些函数具有特定的意义。因此'(.*)'可能对函数有意义,尽管它对Python本身没有任何意义。由于

两个包含(。*)字符串的函数是glob.globfnmatch.fnmatch和re模块函数。

在glob和fnmatch中,'*'具有特殊含义,意味着“任何东西”。您通常使用它来匹配文件名:

>>> import glob
>>> glob.glob('/tmp/foobar.*')
['/tmp/foobar.tmp', '/tmp/foobar.txt', '/tmp/foobar.conf']

您还可以列出具有特定结尾的所有内容:

>>> import glob
>>> glob.glob('/tmp/*.txt')
['/tmp/foobar.txt', '/tmp/frotz.txt', '/tmp/wfsh.txt']

因此,在这些模块中'(.*)'意味着任何东西都以(。并以...结尾)开头,其中包含任何东西。

在re模块中,您处理正则表达式。正则表达式是一种非常神奇的文本匹配语言。 '.'表示“任何字符(除了换行符,除非你设置一个特殊的标志使它也意味着换行符)”,而'*'表示“前一次匹配的零到无限重复次数”。因此'.*'的意思是“几乎任何东西”,并且常见于常规表达式,因为'foobar.*'意味着任何以foobar开头的东西。

括号表示“组”,要知道这意味着您只需要阅读documentation。如果没有一些实验,你可能不会得到它,所以你看看会发生什么。

基本上'(。*)'匹配任何东西。我假设你的正则表达式之前和之后都有文本?

答案 1 :(得分:0)

这是解释它的一种非常奇怪的方式,但是:。*在文件中使用时意味着一组文件......就像你使用过一样 fruits.*代替fruits.apple,就像说fruits.applesfruits.orangesfruits.bananas以及水果组中的任何其他文件一样。