Windows和Linux中正则表达式结果不同?

0 投票
1 回答
1206 浏览
提问于 2025-04-18 11:02

我写了一些代码,用于一个项目,这个项目需要在文件名的开头进行匹配。下面是我在Windows上运行正常的代码。

   for root, dirs, files in os.walk(up_path):
    files.sort()
    total_files += len(files)
    print total_files
    for fn in files:
        print fn
        filename_zero, extension = os.path.splitext(fn)
        path2 = os.path.join(root, fn)
        ID = re.match('^/d{1,10}', fn).group()
        print ID

在Windows上,如果一个文件叫做 1234567-1.jpg,那么打印出来的ID会是 1234567
但是在Linux上,我遇到了一个 Nonetype error,打印的ID返回的是 NONE
我知道这意味着没有匹配到内容,所以没有生成ID。
由于唯一的区别是从Windows转到Linux,那这两个系统之间有什么不同的要求呢?
我该怎么做才能让它按预期工作呢?

1 个回答

2

错误,不是 /d,而是 \d,所以你的代码应该是:

ID = re.match('^\d{1,10}', fn).group()

\d 是用来匹配数字的,也就是 [0-9],表示从0到9的所有数字。

撰写回答