python regex以匹配文件名,但不获取任何文件

时间:2018-11-12 02:22:31

标签: python regex

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

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

2 个答案:

答案 0 :(得分:2)

(尽管答案是可以接受的,但我认为答案对其他人来说并不明确,还有改进的余地,因此我在此处添加了新答案)

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

*表示之前令牌的任何出现(在您的情况下,表示c*?是任何情况下都不愿意的匹配。 .表示任何字符

这意味着您要尝试匹配的字符串是:

  • 一个c
  • 随后出现c
  • 后跟任何字符
  • 后跟xml

匹配字符串的示例是c.xml ccccccAxml等。

我认为您想做的是

cc.*?\.xml

这意味着匹配

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

答案 1 :(得分:1)

如何稍微调整一下?

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

输出:

cc123.xml