给出字符串
170905-CBM-238.pdf
我尝试匹配170905-CBM
和.pdf
,以便我可以替换/删除它们并留下238
。
我已经搜索过并找到了有效的作品,但却无法将它们放在一起
这 - > (.*-)
将匹配第一部分和
这 - > (.[^/.]+$)
将匹配最后一部分
但是我无法弄清楚如何将它们绑在一起,以便它匹配之前的所有内容,包括第二个破折号以及之后的所有内容,包括句点(或扩展名),但与之间的数字不匹配。
帮助:)并感谢您的善意考虑。
答案 0 :(得分:1)
有几种选择可以在Nintex中实现您的需求。
如果您使用提取操作,请使用(?<=^.*-)\d+(?=\.[^.]*$)
作为模式。
请参阅regex demo。
<强>详情
(?<=^.*-)
- 一个正向的后视镜,需要在当前位置的左侧立即开始字符串(^
),然后尽可能多地使用除LF以外的任何0+字符。最后一次出现-
以及后续的子模式\d+
- 一位或多位(?=\.[^.]*$)
- 一个积极的前瞻,要求在当前位置的右侧,除.
以外的.
和0+字符的存在,直到字符串的末尾如果您使用替换文字操作,请使用
模式:^.*-([0-9]+)\.[^.]+$
替换文字:$1
请参阅another regex demo(上下文标签显示替换结果)。
<强>详情
^
- 字符串锚点的开头.*
- 除了LF以外的任何0 +字符,直到最后一次出现的后续子模式...... -
- 连字符([0-9]+)
- 第1组:一个或多个ASCII数字\.
- 文字.
[^.]+
- 除.
$
- 字符串结束。替换$1
引用存储在第1组中的值。
答案 1 :(得分:0)
我不知道ninetex正则表达式,但是$ echo "170905-CBM-238.pdf" | sed -E 's/^.*-([0-9]*)\.[^.]*$/\1/'
238
类型的正则表达式:
$ echo "170905-CBM-238.pdf" | perl -pe 's/^.*-([0-9]*)\.[^.]*$/$1/'
238
在Perl中也是如此:
{{1}}