首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >怎样才能匹配第二名的结果?

怎样才能匹配第二名的结果?
EN

Stack Overflow用户
提问于 2014-06-24 09:07:54
回答 3查看 245关注 0票数 1

我有文件名,例如ABC_2014_09_EFG.pdf

我的程序(Enfocus开关)只允许我定义一个regex,它总是使用第一个匹配作为结果。

我想要的是,匹配09的号码。

我已经尝试了_[0-9]{2}_,但是结果中也有下划线。我只需要两个数字,我该怎么做?有线索吗?已经在这里尝试了好几个小时..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-24 09:11:20

试着看看/(?<=\d{4}_)(\d+)/后面

这将查找四位数,后面跟着下划线,然后选择以下数字

以下是它的工作原理的一个简短解释:

Debuggex Demo

二次·

另一种方法可能是使用展望:(\d{2})(?=_\D+)

这将查找两个数字,后面跟着下划线,后面跟着一些非数字。

Debuggex Demo

票数 2
EN

Stack Overflow用户

发布于 2014-06-24 09:11:24

您可以尝试下面的正则表达式来捕获最后一个数字,该数字前面有一个_

代码语言:javascript
运行
复制
.*_([0-9]+).*?$

演示

您可以使用正向前和后视来匹配输入字符串中的两位数字,

代码语言:javascript
运行
复制
(?<=_)\d{2}(?=_)

演示

解释:

  • (?<=_)负责照看_符号。
  • \d{2}检查_符号后面是否有两位数字。
  • (?=_)检查该两位数是否后面跟着一个_。只有满足这两种条件,它才能匹配数字。

如果您的语言支持\K,那么使用它而不是查找

代码语言:javascript
运行
复制
_\K\d{2}(?=_)

演示

票数 1
EN

Stack Overflow用户

发布于 2020-02-28 23:41:46

--这应该适用于Enfocus开关:

代码语言:javascript
运行
复制
function jobArrived( s : Switch, job : Job )
{
	var filename = job.getName( );

	var numberRE = /^\w+\_(\d+)\_\w+\.pdf$/g;	
	numberRE.search( filename );
	var number = numberRE.cap(1);

	job.log(1,"Number is: "+number);

}

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

https://stackoverflow.com/questions/24382568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档