Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从开始将文件名与版本匹配_Regex - Fatal编程技术网

Regex 从开始将文件名与版本匹配

Regex 从开始将文件名与版本匹配,regex,Regex,下面是一个正则表达式,用于匹配从字符串开头到(但不包括)第一个点的所有内容: ^[^.]+ 即: string | matched part ---------------------- foo.txt | foo foo.tar.gz | foo 我需要调整它,使它应该包括像“1.15”或“1.5.1”的东西。即: string | matched part ------------------------------- foo_1.15.txt

下面是一个正则表达式,用于匹配从字符串开头到(但不包括)第一个点的所有内容:

^[^.]+
即:

string     | matched part
----------------------    
foo.txt    | foo
foo.tar.gz | foo
我需要调整它,使它应该包括像“1.15”或“1.5.1”的东西。即:

string           | matched part
-------------------------------
foo_1.15.txt     | foo_1.15
foo_1.5.1.tar.gz | foo_1.5.1
有可能吗?

您可以使用:

^[^.]+[.0-9]*(?=\..+$)

编辑:要同时匹配
aaa
aaa\u 1
aaa\u 1.15
aaa\u 1.15.20
,您可以将
\.+
部分设置为可选部分,该部分赋予此正则表达式:

^[^.]+[.0-9]*(?=(?:\..+)?$)

投票表决通过。但是,您能否对其进行改进,使其与以下情况相匹配:
aaa
aaa\u 1
aaa\u 1.15
aaa\u 1.15.20
?每个字符串都应该从头到尾匹配。我在最初的问题中没有满足这个要求,但这是隐含的假设。@johnc.j。我已经更新了答案;希望有帮助:)