寻找匹配数字前后的正则表达式

Looking for regex to match before and after a number

给定字符串

170905-CBM-238.pdf

我正在尝试匹配 170905-CBM.pdf,这样我就可以 replace/remove 它们并剩下 238

我已经搜索并找到了可行但无法将它们组合在一起的部分。
This-> (.*-) 将匹配第一部分并且
This-> (.[^/.]+$) 将匹配上一节

但我不知道如何将它们联系在一起,以便它匹配之前的所有内容,包括第二个破折号和之后的所有内容,包括句点(或扩展名)但不匹配之间的数字。

帮助 :) 并感谢您的考虑。

我不知道 ninetex 正则表达式,但是 sed 类型的正则表达式:

$ echo "170905-CBM-238.pdf" | sed -E 's/^.*-([0-9]*)\.[^.]*$//'
238

同样适用于 Perl:

$ echo "170905-CBM-238.pdf" | perl -pe 's/^.*-([0-9]*)\.[^.]*$//'
238

在 Nintex 中有几个选项可以实现您的需要。

如果使用Extract操作,使用(?<=^.*-)\d+(?=\.[^.]*$)作为Pattern.

参见regex demo

详情

  • (?<=^.*-) - 正后视要求紧接在当前位置的左侧,字符串的开头 (^),然后是除 LF 之外的任何 0+ 个字符,尽可能多到最后一次出现的 - 和后续的子模式
  • \d+ - 1 个或多个数字
  • (?=\.[^.]*$) - 一个积极的前瞻要求,紧接在当前位置的右侧,存在 .. 以外的 0+ 个字符,直到结束字符串。

如果使用替换文本操作,请使用

模式^.*-([0-9]+)\.[^.]+$
替换文字</code></p> <p>参见 <a href="http://regexstorm.net/tester?p=%5E.*-%28%5B0-9%5D%2B%29%5C.%5B%5E.%5D%2B%24&i=170905-CBM-238.pdf&r=%241" rel="nofollow noreferrer">another regex demo</a>(<em>上下文</em> 选项卡显示替换结果)。</p> <p><strong>详情</strong></p> <ul> <li><code>^ - 字符串锚点的开始

  • .* - 除了 LF 之外的任何 0+ 个字符,直到后续子模式的最后一次出现...
  • - - 一个连字符
  • ([0-9]+) - 第 1 组:一个或多个 ASCII 数字
  • \. - 文字 .
  • [^.]+ - .
  • 以外的 1 个或多个字符
  • $ - 字符串结尾。
  • 替换 引用存储在组 1 中的值。