鉴于串寻找正则表达式前后数
匹配170905-CBM-238.pdf
我想匹配170905-CBM
和.pdf
,这样我可以替换/删除它们并留下238
。
我已经搜索并找到可以工作但不能将它们放在一起的作品。
这个 - >(.*-)
将匹配第一部分和
这个 - >(.[^/.]+$)
将用最后一节
但我无法弄清楚如何将它们结合在一起,使其符合之前的一切,包括第二个短线以及之后的所有内容,包括期间(或延期),但不匹配之间的数字。
帮助:)并感谢您的关心。
鉴于串寻找正则表达式前后数
匹配170905-CBM-238.pdf
我想匹配170905-CBM
和.pdf
,这样我可以替换/删除它们并留下238
。
我已经搜索并找到可以工作但不能将它们放在一起的作品。
这个 - >(.*-)
将匹配第一部分和
这个 - >(.[^/.]+$)
将用最后一节
但我无法弄清楚如何将它们结合在一起,使其符合之前的一切,包括第二个短线以及之后的所有内容,包括期间(或延期),但不匹配之间的数字。
帮助:)并感谢您的关心。
有几个选项来实现你Nintex需要什么。
如果使用提取操作,使用(?<=^.*-)\d+(?=\.[^.]*$)
作为模式。
查看regex demo。
详细
(?<=^.*-)
- 积极的回顾后,需要立即到当前位置的左侧,字符串(^
)的开始,那么任何0+字符比LF其他尽可能多的了到的-
最后一次出现和随后的子模式\d+
- 1或多个数字(?=\.[^.]*$)
- 正先行要求,立即至t的右他当前的位置,存在.
以及.
以外的0+字符,直到字符串的末尾。如果使用替换文本操作,使用
模式:^.*-([0-9]+)\.[^.]+$
替换文本:$1
见another regex demo(在上下文标签显示的结果替代)。
详细
^
- 字符串锚开始.*
- 比LF其他到随后的子模式的最后出现的任何字符0+ ...-
- 一个连字符([0-9]+)
- 第1组:一个或多个ASCII数字\.
- 串的端 - 字面.
[^.]+
- 比.
$
其它1个或多个字符。替换$1
参照存储在组的值为1
我不知道ninetex正则表达式,但sed
类型的正则表达式:
$ echo "170905-CBM-238.pdf" | sed -E 's/^.*-([0-9]*)\.[^.]*$/\1/'
238
在Perl同一作品:
$ echo "170905-CBM-238.pdf" | perl -pe 's/^.*-([0-9]*)\.[^.]*$/$1/'
238
尝试['^ * - ([0-9] +)\ [^] + $'。](https://开头regex101.com/r/5d3pfL/1)。 –
似乎匹配的一切 - 我需要它不匹配的数字(和扩展可能不总是PDF)--cheers – jlisham
如果你只是想提取'238',为什么要匹配其他什么?只要做' - (\ d +)\。pdf $'。 – melpomene