我有文件名,例如ABC_2014_09_EFG.pdf
我的程序(Enfocus开关)只允许我定义一个regex,它总是使用第一个匹配作为结果。
我想要的是,匹配09的号码。
我已经尝试了_[0-9]{2}_,但是结果中也有下划线。我只需要两个数字,我该怎么做?有线索吗?已经在这里尝试了好几个小时..。
发布于 2014-06-24 09:11:20
试着看看/(?<=\d{4}_)(\d+)/后面
这将查找四位数,后面跟着下划线,然后选择以下数字
以下是它的工作原理的一个简短解释:

二次·
另一种方法可能是使用展望:(\d{2})(?=_\D+)
这将查找两个数字,后面跟着下划线,后面跟着一些非数字。

发布于 2014-06-24 09:11:24
您可以尝试下面的正则表达式来捕获最后一个数字,该数字前面有一个_,
.*_([0-9]+).*?$演示
或
您可以使用正向前和后视来匹配输入字符串中的两位数字,
(?<=_)\d{2}(?=_)演示
解释:
(?<=_)负责照看_符号。\d{2}检查_符号后面是否有两位数字。(?=_)检查该两位数是否后面跟着一个_。只有满足这两种条件,它才能匹配数字。或
如果您的语言支持\K,那么使用它而不是查找
_\K\d{2}(?=_)演示
发布于 2020-02-28 23:41:46
--这应该适用于Enfocus开关:
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);
}
https://stackoverflow.com/questions/24382568
复制相似问题