0

我必须编写一个匹配任何序列文件名掩码的正则表达式,例如:

三个测试用例:
object.scrn_1-2_0006- 应该匹配object.scrn_1-2
object.scrn0006- 应该匹配object.scrn
object0006- 应该匹配object

where0006是序列中文件的数量,从0000到任意数字。

可选地,第二个表达式应该匹配这个数字。
虽然匹配第二个和第三个很容易,但我发现很难匹配第一个。

我使用以下正则表达式来匹配名称:
[a-zA-Z0-9_\-\.]+[_\-\.]?\d*

这个匹配号码:
[_\-\.]?[123456789][0-9]*\b

我真的很感激任何帮助。谢谢。

4

2 回答 2

0

/^(.+)\d{4)$/ 在object.scrn_1-2_0006的情况下应该做你需要的, object.scrn_1-2_ 将在第一个寄存器中

于 2013-05-22T10:31:45.610 回答
0

您可以使用单个正则表达式来匹配和捕获您需要的部分。例如,您可以使用

(^.*)(\d{4}$)

(^.*)捕获字符串开头的每个字符;

(\d{4}$)捕获 4 位数字(\d表示一个数字字符并{4}使其正好为 4 位数字)。

第一个捕获的组是最后 4 位数字之前的所有内容,第二个捕获的组包含 4 个数字。

如果可以有可变位数,只需{4}+

(^.*)(\d+$)
于 2013-05-22T10:34:58.580 回答