带括号编号的文件名上的正则表达式?

时间:2011-10-21 07:38:41

标签: regex

我只是reg exp上的菜鸟,我正在努力学习它们。如果我有这样的文件名:

myfile(1).jpg or myfile(21).jpg

如何使用reg exp(php或javascript)提取file name [myfile]bracket numbering [1]extension [jpg]

3 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

/^(.*?)(?:\((\d+)\))?\.(.+)$/

$1变量将包含文件名。 $2变量将包含编号(如果可用,或者它将是未定义的或为null)。 $3变量将包含扩展名。

答案 1 :(得分:0)

您可以尝试:

^(.*?)\((\d+)\)\.(.*)$
  1. 第一组是文件名
  2. 第二组 - 文件数
  3. 最后一组 - 没有点的扩展程序

答案 2 :(得分:0)

您使用哪种语言的正则表达式? 哪种正则表达式语法变体?

以下是使用perl的示例:

my $s = 'myfile(21).jpg';
$s =~ m/^(.*?)\((\d+)\)\.(.*)$/;
print "found 1=$1, 2=$2, 3=$3\n";

它返回:

found 1=myfile, 2=21, 3=jpg

^(.*?)\(:存储一个字符串最短的字符串“(”,从字符串的开头开始

(\d+):存储一个组:数字序列

\.(.*)$存储一个组:字符串后面的字符串“。”到字符串结尾(文件扩展名)