Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Regex表达式与最后一个数字组件匹配,但不包括文件扩展名。

Regex表达式与最后一个数字组件匹配,但不包括文件扩展名。
EN

Stack Overflow用户
提问于 2022-02-11 22:13:58
回答 3查看 150关注 0票数 0

我很难想出一个正则表达式。给定一个文件路径,我需要匹配路径的最后一个数字部分(图像序列中的“框架”号),但也需要忽略文件扩展名中的任何数字组件。

例如,给定路径:

/path/to/file/abc123/GCAM5423.xmp

下面的表达式将正确匹配5423

((?P<index>(?P<padding>0*)\d+)(?!.*(0*)\d+))

但是,如果文件扩展名包含如下数字,则此表达式将失败:

/path/to/file/abc123/GCAM5423.cr2

在这种情况下,表达式将匹配文件扩展名中的2,而我仍然需要它来匹配5423。如何修改上述表达式以忽略具有数字组件的文件扩展名?

使用蟒蛇味的regex。提前感谢!

编辑:谢谢大家的帮助!为了澄清,我特别需要修改上面的表达式,以便只捕获最后一个组。我将此模式传递给外部库,因此它需要包含指定的组,并且只匹配扩展之前的最后一个数字。

EN

回答 3

Stack Overflow用户

发布于 2022-02-11 22:25:21

你可以试试这个:

\/[a-zA-Z]*(\d*)\.[a-zA-Z0-9]{3,4}$

票数 1
EN

Stack Overflow用户

发布于 2022-02-12 00:12:02

尝试以下模式:\/[^/\d\s]+(\d+)\.[^/]+$

见Regex 演示

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

pattern = r"\/[^/\d\s]+(\d+)\.[^/]+$"

texts = ['/path/to/file/abc123/GCAM5423.xmp', '/path/to/file/abc123/GCAM5423.cr2']

print([match.group(1) for x in texts if (match := re.search(pattern, x))])

输出:

['5423', '5423']

票数 1
EN

Stack Overflow用户

发布于 2022-02-11 22:35:53

Step1:在最后一个点之前找到子字符串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(.*)\.

输入:/path/to/file/abc123/GCAM5423.cr2

输出:/path/to/file/abc123/GCAM5423

Step2:使用正则表达式查找最后一个数字。

输入:/path/to/file/abc123/GCAM5423

输出:5423

我不知道怎么加入这两个雷克斯,但这对你也有好处。我的hopes^_^

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71089435

复制
相关文章
C:基于GNU regex(regex.h)regexec实现正则表达式多次匹配
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。 不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree. 我们知道 regexec 不能通过一次调用找到字符串中所有满足匹配条件的字符串位置,所以需要通过步进偏移的方式循环执行regexec才能把字符串中所有满足条件的匹配找出来, 每一次匹配的起始偏移是上一次匹配到的字符串结束偏移。
10km
2021/11/17
2.4K1
MongoDB模糊查询($regex查询、正则表达式匹配查询)
这里的 i 就是指最上面语法中的那个 options 的值 i 是其的一个选项,代表忽略大小写的意思。 这里 options 还有以下几个选项供使用:
全栈程序员站长
2022/08/23
13.7K0
与python相关的文件扩展名
一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。
py3study
2020/01/09
1.2K0
Android 常用正则表达式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/77800756
程序员徐公
2018/09/17
2.1K0
正则表达式匹配任意字符(包括换行符)[通俗易懂]
可以用 ([\s\S]*) ,也可以用 “([\d\D]*)”、“([\w\W]*)” 来匹配,就可以匹配包括换行符在内的任意字符。
全栈程序员站长
2022/09/06
3.9K0
掌握 Python RegEx:深入探讨模式匹配
正则表达式通常缩写为 regex,是处理文本的有效工具。本质上,它们由一系列建立搜索模式的字符组成。该模式可用于广泛的字符串操作,包括匹配模式、替换文本和分割字符串。
数据科学工厂
2023/08/10
2310
掌握 Python RegEx:深入探讨模式匹配
C: GNU regex library (regex.h)正则表达式调用示例
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。 我也是最近才接触这个相对于C++/Java实现来说非常简陋,勉强够用的正则表达式库。 不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree, 以下以完整源码的方式调用以上函数完成对GNU regex library的基本测试。
10km
2021/11/15
1.1K0
Js中RegExp对象
RegExp对象表示正则表达式,是由普通字符和特殊字符也叫元字符或限定符组成的文字模板,用于对字符串执行模式匹配。
WindRunnerMax
2020/09/07
10.6K0
你应该学习正则表达式
Regular Expressions (Regex):正则表达式,软件工程中最为强大,且广泛适用,令人信服的技术之一。从验证电子邮件地址到执行复杂的代码重构器,正则表达式的用途非常广泛,是任何软件工程师工具箱中必不可少的条目。
哲洛不闹
2018/09/14
5.3K0
你应该学习正则表达式
grep中使用"\d"匹配数字不成功的原因
首先正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs,perl RegExs)
程序手艺人
2019/02/21
4.1K0
正则表达式(四):Java regex
Java 作为一种被广泛使用的编程语言,从 jdk-1.4 开始,标准库提供了 java.util.regex 包来支持正则表达式的使用。正则在 Java 中的使用和 python 中略有区别,主要是使用方式上稍有差异。名称上的不同足可见一斑,python 中两个核心对象是 Pattern 和 Match ,而 Java 中则是 Pattern 和 Matcher。
zhipingChen
2018/09/13
1K0
简单的正则表达式
特殊字符 ^ $ * ? + {2} {2,} {2,5} | [] [^] [a-z] . \s \S \w \W [\u4E00-\u9FA5] () \d 常用的6个re中的函数
听城
2018/04/27
1.5K0
《C++Primer》第十七章 标准库特殊设施
tuple是类似pair的模板,每个pair的成员类型都不相同,但是每个pair恰好有两个成员。我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新数据结构来表示这些数据,这时候就可以用到tuple。
TOMOCAT
2020/12/03
7560
CMake file命令参数GLOB和GLOB_RECURSE
WRITE选项将会写一条消息到名为filename的文件中。如果文件已经存在,该命令会覆盖已有的文件;如果文件不存在,它将创建该文件。
233333
2022/10/04
3.8K0
sed替换最后一个匹配_ppt占位符设置
最近在公司项目中遇到一个需要,需要在用户输入的入参数据中,将数据里面${}占位符的数据替换为真实的数据方式,以下提供两种方式
全栈程序员站长
2022/10/04
1.1K0
正则表达式介绍与使用
正则表达式(Regular Expression)描述字符串结构模式的形式化表达方法,正则(Regex)表达式处理的对象的字符串或者抽象地说是一个对象序列(计算机体系的本质数据结构) 正则表达式是一种文本模式包括普通字符(例如a 到 z 之间的字母)和特殊字符(称为”元字符”),用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”;
全栈工程师修炼指南
2022/09/28
1.7K0
正则表达式介绍与使用
正则表达式介绍与使用
正则表达式(Regular Expression)描述字符串结构模式的形式化表达方法,正则(Regex)表达式处理的对象的字符串或者抽象地说是一个对象序列(计算机体系的本质数据结构) 正则表达式是一种文本模式包括普通字符(例如a 到 z 之间的字母)和特殊字符(称为”元字符”),用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”;
全栈工程师修炼指南
2020/10/23
1.2K0
正则表达式介绍与使用
MSVC下使用gnu regex(正则表达式C语言接口regex.h)
最近我的一个跨平台项目遇到了一个问题:需要在MSVC下调用linux下才有正则表达式C接口(regex.h)。
10km
2021/11/10
9600
mongodb 字符串查找匹配中$regex的用法
官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive
庞小明
2018/12/10
6.1K0
点击加载更多

相似问题

javascript regex匹配文件扩展名,但不包括前缀扩展名

20

Regex:匹配,但不包括部分匹配

55

Python regex匹配整个文件名,包括文件扩展名。

35

Regex -提取到匹配,但不包括该匹配

21

Regex将单词与字母+数字匹配,但不只是数字

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文