Python 与Windows和linux中的正则表达式不同的结果?

Python 与Windows和linux中的正则表达式不同的结果?,python,regex,linux,python-2.7,Python,Regex,Linux,Python 2.7,我已经为需要匹配文件名开头的项目拼凑了一些代码。下面是在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)

我已经为需要匹配文件名开头的项目拼凑了一些代码。下面是在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错误
,其中打印ID返回
NONE

我知道这意味着没有匹配,因此不会生成ID。
由于唯一的区别是从Windows移动到Linux,两个系统之间的不同要求是什么?

我怎样才能使它按预期工作?

错误,它不是
/d
而是
\d
,因此您的代码是

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

\d
匹配一个数字,即,
[0-9]

您的代码也不能匹配Windows中的任何内容,因为
/d{1,10}
匹配一个正斜杠,并且在1到10个
d
字符之间。由于
fn
是一个没有目录路径的文件名,因此该名称中永远不会有斜杠。@MartijnPieters他在文件名中放斜杠的位置?@AvinashRaj:斜杠在模式中。它永远不能在文件名中。@MartijnPieters如果您将您的评论作为答案发布会更好。@AvinashRaj您的答案很多。我只是在说明这在Windows上起作用的说法,这是不可能的。哈哈。有时候你只需要一双眼睛。感谢又短又甜,+1:)