使正则表达式准确匹配点文件

2023-12-28

所以我已经达到了我的正则表达式能力的极限。我这里有一个 python 正则表达式,用于将文件路径或文件 uri 与各个部分的命名捕获组相匹配。它似乎是工作文件,除了点文件。

MATCH_PATH = re.compile(
    r"^(?P<uri>file://)?" +             # optional file uri
    r"(?P<path>(?:/?[A-Z]{1}:)?" +      # start of path capture, optional windows top-level directory
    r"[\\/]?" +                         # optional start separator
    r"(?:[\w \-\.]+[\\/])+)" +          # path
    r"(?P<filename>[\w \-]+)?" +        # optional filename
    r"\.?(?P<extension>[a-zA-Z0-9]+)?$" # extension optional
)

我可以通过以下方式使其匹配点文件删除可选限定符? https://regex101.com/r/j1K5k2/2之后.在扩展名部分,但它无法匹配没有扩展名的文件(例如 makefile)或目录。我尝试放置一个点周围的非捕获组和带有可选限定符的扩展组 https://regex101.com/r/j1K5k2/1,这不起作用:扩展名与文件名分组。我可以调整它以在所有情况下正确匹配扩展名和名称,同时仍然匹配目录吗?

应匹配的示例输入:

/foo/bar.txt
/foo/bar/
/foo/makefile
./foo.txt
/foo/._bar.txt
foo/bar.txt
D:\foo\bar.m3u
file:///var/www/html/index.html
file:///C:/users/me/My Documents/index.html

UPDATE

还需要正确匹配

/foo/bar.tar.gz
/foo/._bar.tar.gz

扩展名是tar.gz和名字是bar and ._bar分别。另外,请告诉我这对于正则表达式来说是否太复杂,我可以编写程序代码来分割和处理。


您很可能在前瞻中使用命名的捕获组,如下所示:

^
(?P<uri>file://)?
(?P<path>(?:/?[A-Z]{1}:)?           # start of path capture, optional windows top-level directory
[\\/]?                              # optional start separator
(?:[-. \w]+[\\/])+)                 # path
(?P<filename>\.?[^.]+?(?=\.(?P<extension>.+$)|$))?

See regex101.com 上的演示 https://regex101.com/r/8zRU4S/3/.


Only thing I changed, is the group filename:
(?P<filename>\.?[^.]+?(?=\.(?P<extension>.+$)|$))

它使用带有正向前瞻的惰性点星,寻找.some_extension(然后将其保存到extension) 或行尾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使正则表达式准确匹配点文件 的相关文章

随机推荐

  • ConstraintLayout、RadioGroup 和两列RadioButton

    我有一个 ConstraintLayout 作为根布局 它很好 不过 我现在有一个 RadioGroup 我必须在其中创建两列 RadioButtons 由于 ConstraintLayout 是为了摆脱嵌套布局 我认为将这些 RadioB
  • 如何使用 Javascript 从 url 下载文件?

    如何使用 Javascript 从 url 下载文件 我试图从文本字段中获取用户输入的网址 如下所示 new Ext form TextField disabled false fieldLabel file value id url 我需
  • 更好的 ruby​​ 终端着色库

    有很多着色库 colored term ansicolor 但有没有什么可以做到这一点 puts hello red world bold And world 应该是大胆的 为了说清楚 我想得到这个 e 1m e 31mhello e 0m
  • 应用风格的实际用途是什么?

    我是一名 Scala 程序员 现在正在学习 Haskell 很容易找到 OO 概念的实际用例和现实世界示例 例如装饰器 策略模式等 书籍和互联网上充斥着这些内容 我开始意识到 对于函数概念来说 情况并非如此 例证 应用词 我正在努力寻找应用
  • 如何计算CNN的权重个数?

    考虑到用于将图像分为两类的卷积神经网络 我们如何计算权重数量 输入 100x100 灰度图像 LAYER 1 具有 60 个 7x7 卷积滤波器的卷积层 stride 1 有效 填充 LAYER 2 具有 100 个 5x5 卷积滤波器的卷
  • inner() 为参数“ax”获取了多个值

    在带有 Python 的 Jupyter 笔记本中 我正在从数据帧的两列绘制六边形联合图 该图绘制正确 但我无法调整图片大小 这是代码 fig ax plt subplots fig set size inches 11 7 8 27 sn
  • 如何使用反射调用java中的方法

    如何使用反射调用带参数的方法 我想指定这些参数的值 下面是使用涉及原语的反射来调用方法的简单示例 import java lang reflect public class ReflectionExample public int test
  • Android Smack 聊天客户端

    嗨 朋友们 我正在使用从以下网址下载的 Smack3 2 1 jar http www igniterealtime org downloads index jsp http www igniterealtime org downloads
  • 如何在 terraform 中使用嵌套循环

    我正在尝试使用 Terraform count 在 Azure 中创建 3 个虚拟机 每个虚拟机需要多个磁盘 有什么办法可以做到这一点吗 我尝试创建磁盘名称和大小的映射 但收到错误 无法同时使用 count 和 for each resou
  • Pickle Spark RDD 并将其读入 Python

    我正在尝试通过 pickle 来序列化 Spark RDD 并将 pickled 文件直接读入 Python a sc parallelize 1 2 3 4 5 a saveAsPickleFile test pkl 然后 我将 test
  • 类构造函数中选项对象的默认值

    我创建了一个类 我想为值设置一些默认选项 以防用户不提供任何参数 我最近使用了一个将多个参数传递给一个对象的构造函数 因为我相信当用户创建该类的新实例时 它有助于提高可读性 这是我之前的做法 module exports class Use
  • 根据 codeigniter 中的用户角色重定向到管理员和用户

    如果管理员正在登录 我希望他进入管理 仪表板 否则到用户仪表板 登录控制器如下 在用户表中 我有一列 角色 值为 1 和 2 1 代表管理员 2 代表用户 并且有单独的角色表 登录用户功能 public function login dat
  • 我可以将 MongoDB 配置为内存吗?

    我有兴趣使用一个能够实现高性能的数据库 并且预期需要集群进行大规模水平扩展 我们正在考虑使用 MongoDB 有谁知道我是否可以在内存中使用它 即在 RAM 中 出于性能原因 Tnx 截至今天 最新版本的 MongoDB 即 v3 4 在其
  • 使用OpenCV的Sobel运算计算图像梯度方向

    我正在尝试使用 OpenCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我想我理解这个理论 但实现它比我想象的更具挑战性 我希望渐变方向在 0 360 度之间 但我的代码显示所有渐变都在 180 270
  • 如何从离开网站警报中获取文本?

    如何从离开网站警报中获取文本 我尝试使用切换到它driver switchTo alert 但我收到空白文本 I have also attached screenshot of alert 请在这方面帮助我 下面是我的代码 public
  • 既然 BluetoothAdapter.getDefaultAdapter() 已被弃用,我该使用什么?

    How do I fix the deprecation warning in this code Alternatively are there any other options for doing this val mBluetoot
  • Power BI:计算无法正常工作

    我有一个包含资源名称 资源所有者 项目名称 项目经理 工作量的表 对于每个资源所有者 我想计算借出的工作量 所有者的资源在除所有者项目之外的项目中花费的工作量 和借用的工作量 所有者的资源在除项目所有者之外的其他项目中花费的工作量 For
  • 从 Groovy 中的字符串中删除空格

    我有一个像这样的字符串 String str My name is Monda 我怎样才能实现像这样的字符串 str MynameisMonda 您可以使用replaceAll http docs groovy lang org lates
  • UITableView,如何捕捉动画结束?

    我有一个包含很多行的 UITableView 它就像一个手风琴 http docs jquery com UI Accordion http docs jquery com UI Accordion主单元有子单元 子单元也有子单元 所以这是
  • 使正则表达式准确匹配点文件

    所以我已经达到了我的正则表达式能力的极限 我这里有一个 python 正则表达式 用于将文件路径或文件 uri 与各个部分的命名捕获组相匹配 它似乎是工作文件 除了点文件 MATCH PATH re compile r P