我正在阅读一本学习python的书,这是其中一个例子,所以我很想知道这是否意味着什么。
答案 0 :(得分:1)
(。*)并不代表Python中的任何特定内容。但是,当字符串的一部分时,它可能对某些函数具有特定的意义。因此'(.*)'
可能对函数有意义,尽管它对Python本身没有任何意义。由于
两个包含(。*)字符串的函数是glob.glob,fnmatch.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.apples
,fruits.oranges
,fruits.bananas
以及水果组中的任何其他文件一样。