我必须编写一个匹配任何序列文件名掩码的正则表达式,例如:
三个测试案例:
object.scrn_1-2_0006
- 应与object.scrn_1-2
匹配
object.scrn0006
- 应与object.scrn
匹配
object0006
- 应与object
其中0006
是序列中的文件数,从0000
到任意数字。
可选地,第二个表达式应与此数字匹配 虽然很容易匹配第二个和第三个,但我发现很难匹配第一个。
我使用以下正则表达式来匹配名称:
[a-zA-Z0-9_\-\.]+[_\-\.]?\d*
和这个匹配数字:
[_\-\.]?[123456789][0-9]*\b
我真的很感激任何帮助。感谢。
答案 0 :(得分:0)
/ ^(。+)\ d {4)$ /应该在 object.scrn_1-2_0006 的情况下做你需要的,object.scrn_1-2_将在第一个寄存器中
答案 1 :(得分:0)
您可以使用单个正则表达式匹配并捕获所需的部分。例如,您可以使用
(^.*)(\d{4}$)
(^.*)
捕获字符串开头的每个字符;
(\d{4}$)
捕获4位数字(\d
表示一个数字字符,而{4}
表示正好是4位数。)
第一个被捕获的组是最后4个数字之前的所有内容,第二个被捕获的组包含4个数字。
如果可以有不同数量的数字,只需将{4}
转为+
(^.*)(\d+$)