正则表达式:如何在捕获单个组时匹配整个字符串 [重复]

     2023-02-26     207

关键词:

【中文标题】正则表达式:如何在捕获单个组时匹配整个字符串 [重复]【英文标题】:Regex: How to match entire string while capturing individual groups [duplicate] 【发布时间】:2019-11-01 10:45:17 【问题描述】:

我正在尝试使用正则表达式解析此文件名中的日期。

LBX845656_PayOnline_0528-20191429.txt.052819220054.bak

我遇到的问题是我需要正则表达式来匹配整个文件名,同时捕获一个包含日期的组。

我编写了这个正则表达式来捕获捕获组 1 中的日期:

([0-9]0,8(?=\.txt))

在线使用正则表达式测试器,这似乎从我正在寻找的文件名中捕获了正确的字符串,但我不知道如何让正则表达式匹配整个字符串。

这是我要返回的内容

FULL MATCH: LBX845656_PayOnline_0528-**20191429**.txt.052819220054.bak
CAPTURE GROUP 1: 20191429

提前感谢您的任何建议。

【问题讨论】:

\w+_\w+_\d+-([0-9]0,8(?=\.txt)).txt.\d+.bak 至少会匹配您当前拥有的内容。但不确定该字符串还有哪些其他变体 “匹配整个字符串”是什么意思? Is that OK for you? 如果要得到与[0-9]0,8(?=\.txt)匹配的字符串,不需要匹配整个字符串,只需要matcher.find() @WiktorStribiżew OP 说他们需要匹配整个字符串,如果匹配,则获取日期部分。这是 OP 的要求,而不是正则表达式引擎的要求。 Imo 你太早结束了讨论,而且你引用的问题没有涵盖那个具体的话题。 【参考方案1】:

我认为这是一个更简单的正则表达式,可以解决您的问题,假设日期始终为 8 位。

选项 1

如果您可以假设日期是文件名中唯一的 8 位字符串

^.*[^\d](\d8)[^\d].*$

选项 2

如果你想假设它前面有一个“-”并且有一个“.”之后

^.*-(\d8)\..*$

选项 3

如果你想假设它后面是 .txt

^.*(\d8)\.txt.*$

【讨论】:

顺便说一句,20191429 看起来不像日期,因为 14 和 29 对于月份都是无效的。在我看来,0528-20191429 是日期加上(可能)时间(2019 年 5 月 28 日下午 2:29) 感谢罗伯特的回答。嗯,是的,在发布后注意到了这一点。文件中的日期格式为“MMDD-YYYYMMSS”。但是我绝对可以使用您提供给我的东西,我以错误的方式思考正则表达式。再次感谢。

如何在正则表达式中使用带有字符的“环视”来捕获整个字符串?

】如何在正则表达式中使用带有字符的“环视”来捕获整个字符串?【英文标题】:Howtocapturetheentirestringwhileusing\'lookaround\'withcharsinregex?【发布时间】:2015-12-3119:26:42【问题描述】:我必须找到所有仅由字母\'a\'和\'b\'组成的字符... 查看详情

正则表达式:匹配单个数字重复n次

匹配单个数字重复n次:(d)1n-1其中,d表示一位数字,(d)表示匹配之后捕获该匹配,并分组并对组进行编号1表示被捕获的第一个分组n-1是因为被捕获的第一个分组已经消耗了一位数字,因此要减1。注意:用python写的时候,模式字符... 查看详情

正则表达式结果为多个匹配输出单个匹配

】正则表达式结果为多个匹配输出单个匹配【英文标题】:Regexresultoutputssinglematchformultiplematches【发布时间】:2019-06-1913:23:58【问题描述】:我在“错误消息”字段中有一个包含多个换行符的文件。我需要将换行符替换为空格,... 查看详情

如何将整个字符串与正则表达式匹配?

】如何将整个字符串与正则表达式匹配?【英文标题】:HowdoImatchanentirestringwitharegex?【发布时间】:2011-05-0615:00:28【问题描述】:我需要一个正则表达式,它只会在整个字符串与我的查询匹配的地方找到匹配项。例如,如果我搜... 查看详情

如何使用正则表达式匹配所有数字字符和一些单个字符

】如何使用正则表达式匹配所有数字字符和一些单个字符【英文标题】:Howtomatchallnumericalcharactersandsomesinglecharactersusingregex【发布时间】:2014-01-2400:33:42【问题描述】:如何使用正则表达式匹配字符串中的所有数字以及特定字符... 查看详情

正则表达式如何匹配空值?

正则表达式匹配空值方式如下:\\b匹配单词开头或结尾位置^匹配字符串开端位置$匹配字符串结尾位置\\s匹配一切空白字符\\n匹配换行正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑... 查看详情

如何匹配而不是捕获正则表达式的一部分?

】如何匹配而不是捕获正则表达式的一部分?【英文标题】:Howtomatch,butnotcapture,partofaregex?【发布时间】:2011-04-2423:55:08【问题描述】:我有一个字符串列表。其中一些是123-...456的形式。可变部分“...”可能是:字符串“apple”... 查看详情

如何在我的 Django urls.py 中使用单个正则表达式捕获多个参数?

】如何在我的Djangourls.py中使用单个正则表达式捕获多个参数?【英文标题】:HowtocapturemultipleargumentsusingasingleRegExinmyDjangourls.py?【发布时间】:2011-04-1420:07:29【问题描述】:我有一个应用程序允许您通过3个字段过滤数据。我正在... 查看详情

正则表达式 Match.Value 返回整个值,而不是匹配的组

】正则表达式Match.Value返回整个值,而不是匹配的组【英文标题】:RegexMatch.Valuereturningentirevalue,notthematchedgroups【发布时间】:2015-05-0617:03:19【问题描述】:我目前正在尝试实现相对简单的任务,即使用正则表达式从存在于花括... 查看详情

正则表达式匹配整个字符串,仅此而已

】正则表达式匹配整个字符串,仅此而已【英文标题】:Regexmatchingtheentirestringandnothingelse【发布时间】:2021-10-0906:08:47【问题描述】:我正在尝试使用正则表达式匹配字符串TF8/Z2IF。我只想匹配那个字符串而不是别的。我在匹配... 查看详情

正则表达式如何匹配可选字符

】正则表达式如何匹配可选字符【英文标题】:Regexhowtomatchanoptionalcharacter【发布时间】:2011-04-2918:27:28【问题描述】:我有一个正则表达式,我认为它直到现在都可以正常工作。我需要匹配一个可选字符。它可能存在,也可能... 查看详情

如何匹配整个字符串而不仅仅是部分?

...发布时间】:2014-09-3020:54:14【问题描述】:我有一个正则表达式列表,我遍历这些正则表达式以查找字符串的匹配模式。我想获取与“00000.00”完全匹配的正则表达式的索引,即1。但是,0的正则表达式也返回true,但只有当存在... 查看详情

正则表达式。匹配整个单词

】正则表达式。匹配整个单词【英文标题】:Regex.Matchwholewords【发布时间】:2010-11-1514:15:58【问题描述】:在C#中,我想使用正则表达式来匹配以下任何单词:stringkeywords="(shoes|shirt|pants)";我想在内容字符串中查找整个单词。我以... 查看详情

正则表达式学习(代码片段)

...码[]的特殊语法[]和()小结分组捕获选择分组例子定义正则表达式(RegularExpression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配... 查看详情

Perl 中的正则表达式组:如何从正则表达式组中捕获与字符串中出现的未知数量/多个/变量匹配的元素到数组中?

】Perl中的正则表达式组:如何从正则表达式组中捕获与字符串中出现的未知数量/多个/变量匹配的元素到数组中?【英文标题】:RegexGroupinPerl:howtocaptureelementsintoarrayfromregexgroupthatmatchesunknownnumberof/multiple/variableoccurrencesfromastring?... 查看详情

如何计算 ASP.Net MVC 中正则表达式捕获的匹配数?

】如何计算ASP.NetMVC中正则表达式捕获的匹配数?【英文标题】:HowtocountthenumberofmatchescapturedbytheregexinASP.NetMVC?【发布时间】:2019-11-1215:52:18【问题描述】:我在计算正则表达式捕获的匹配数时遇到问题,因为它没有计数功能。这... 查看详情

正则表达式中匹配单个字符

匹配单个字符.匹配任意一个字符(除了)[]匹配[]中列举的字符d匹配数字0-9D匹配非数字s匹配空白,即空格S匹配非空白w匹配单词字符W匹配非单词字符 查看详情

python正则表达式--匹配单个字符(代码片段)

re模块操作 在python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re,使用方法如下:#导入re模块importre#使用match方法进行匹配操作result=re.match(正则表达式,要匹配的字符串)#如果上一步匹配到数据的... 查看详情