Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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,只想匹配到但不包括最后一个句点的每个字符 dog.jpg -> dog abc123.jpg.jpg -> abc123.jpg 我试过了 (.+?)\.[^\.]+$ 这样就行了 (.*)\. 第一个捕获的组包含名称。您可以根据您的语言以$1或\1的形式访问它默认情况下正则表达式是贪婪的。这意味着当正则表达式模式能够匹配更多字符时,它将匹配更多字符 对你来说,这是件好事。您只需匹配字符,然后匹配一个点: .*\. 就是 . # Match "any" ch

只想匹配到但不包括最后一个句点的每个字符

 dog.jpg     -> dog
 abc123.jpg.jpg -> abc123.jpg
我试过了

(.+?)\.[^\.]+$
这样就行了

(.*)\.

第一个捕获的组包含名称。您可以根据您的语言以
$1
\1
的形式访问它

默认情况下正则表达式是贪婪的。这意味着当正则表达式模式能够匹配更多字符时,它将匹配更多字符

对你来说,这是件好事。您只需匹配字符,然后匹配一个点:

.*\.
就是

.   # Match "any" character
*   # Do the previous thing (.) zero OR MORE times (any number of times)
\   # Escape the next character - treat it as a plain old character
.   # Escaped, just means "a dot".

因此:默认情况下,要贪婪,请尽可能多地匹配任何字符(因为贪婪),然后再匹配一个文字点。

使用前向断言最后一个点字符:

.*(?=\.)

您有什么问题吗?因此,这里不是为您编写正则表达式的。对于像
abcd
a.b.c.d.e
这样的情况,您需要做的是删除文件扩展名??为什么不使用工具而不是正则表达式呢??像basename()?没有工具只需要学习这一点并不重要只是为了学习过程使用我的outsystems平台测试这一点包括me@bigdowg你在哪里用它?它只是显示匹配的部分。。绿色部分(在演示中)显示了您想要的实际字符串,此处不需要先行。它只增加了步骤的数量。这将始终在同一位置匹配两次。