python正则表达式匹配文件名,但得到None



我在文件夹中有几个文件,我想找出内容并匹配其文件名。但当我使用re.search来实现我的目标时,我只能得到"无"。有人能帮忙吗?

import re
xe = r'D:ABCcc123.xml'
re.search('cc*?.xml', xe)

(虽然有一个公认的答案,但我觉得其他人的答案并不清楚,还有改进的空间,所以我在这里添加了一个新的答案(

问题只是OP使用了错误的正则表达式:cc*?.xml

*表示出现标记的任何情况(在您的情况下表示c(*?在任何情况下都是勉强匹配的。.表示任何字符

这意味着你要做的是匹配一个字符串,它是:

  • ac
  • 然后出现c
  • 后面跟任意字符
  • 然后是xml

匹配字符串的示例为c.xmlccccccAxml

我相信你想做的是

cc.*?.xml

这意味着匹配

  • cc
  • .*?:后面跟着任何字符的出现,尽可能少地匹配
  • .:后面跟着一个点(注意..的区别(
  • 然后是xml

像这样稍微调整一下怎么样?

import re
xe = 'D:ABCcc123.xml'
print (re.search('cc.*?.xml', xe).group())

输出:

cc123.xml

最新更新