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

标签 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)
        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]

关于python - Windows 和 Linux 中正则表达式的不同结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411338/

相关文章:

regex - 计算 qr 正则表达式中的捕获组?

linux - 设置USB串口号

python - 带有小数位数的地板和天花板

python - 2 KS 测试示例 - 似乎有问题

python - 使用 Docker 在 Raspberry pi 中安装 Noetic 时出现的问题

linux - cookie 是如何工作的

Linux Bash 脚本如何使用范围参数

python - 从 Django 请求中获取域名

Python 剥离 Google 快讯 URL

c++ - 索引文件名及其内容