python中的r'。*'和'[。*]'正则表达式有什么区别?

时间:2019-02-09 04:34:54

标签: regex python-3.x

假设a = 'I was born in 1997'

我想使用正则表达式(仅出于学习目的。)打印所有存在的内容

所以当我使用:re.match(r'.*', a)

然后它将匹配项显示为:<_sre.SRE_Match object; span=(0, 18), match='I was born in 1997'>

但是当我使用:re.match(r'[.*]', a)

我没有输出,即找不到匹配项。

2 个答案:

答案 0 :(得分:0)

.是正则表达式中的特殊字符 ,表示匹配除换行符以外的任何其他字符。但是当您在 {{1 }}字符类 ,它将成为普通字符[]

.是一个量词 ,表示零个或多个时间。但是当您在字符类中使用时,它将变成普通字符*

  • * --->意思是匹配换行符以外的任何内容。

  • .* --->表示匹配[.*].

进一步阅读

character class

Dot

答案 1 :(得分:0)

正则表达式.*匹配零个或多个字符,因此当然匹配整个字符串。

正则表达式[.*].*的单个字符匹配(它们在方括号之间失去了作为元字符的意义)。而且由于re.match仅在字符串的开头匹配,所以它不匹配任何内容。 (re.search匹配字符串中的任何位置,但仍不匹配您字符串中的任何内容。

re.match(r'[AEIOU]', a)将与字符串开头的I相匹配。

Python正则表达式的文档:https://docs.python.org/3.7/library/re.html