简单正则表达式:匹配所有内容直到最后一个点

时间:2016-04-22 18:41:54

标签: regex

只想匹配每个角色,但不包括最后一个时期

 dog.jpg     -> dog
 abc123.jpg.jpg -> abc123.jpg

我试过了

(.+?)\.[^\.]+$

3 个答案:

答案 0 :(得分:18)

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

.*(?=\.)

Live demo.

答案 1 :(得分:11)

这样就可以了解

(.*)\.

<强> Regex Demo

第一个捕获的组包含名称。您可以根据自己的语言{/ 1}}或$1访问它

答案 2 :(得分:7)

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

在你的情况下,这是一件好事。你需要做的就是匹配字符,然后是一个点:

public string GetMACAddress()
        {
            ManagementObjectSearcher objMOS = new ManagementObjectSearcher("Select * FROM Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection objMOC = objMOS.Get();
            string macAddress = String.Empty;
            foreach (ManagementObject objMO in objMOC)
            {
                object tempMacAddrObj = objMO["MacAddress"];

                if (tempMacAddrObj == null) //Skip objects without a MACAddress
                {
                    continue;
                }
                if (macAddress == String.Empty) // only return MAC Address from first card that has a MAC Address
                {
                    macAddress = tempMacAddrObj.ToString();
                }
                objMO.Dispose();
            }
            return macAddress;
        }

即,

.*\.

所以:默认情况下贪婪,任何角色都可以匹配任何角色(因为贪婪),然后是文字点。