只想匹配每个角色,但不包括最后一个时期
dog.jpg -> dog
abc123.jpg.jpg -> abc123.jpg
我试过了
(.+?)\.[^\.]+$
答案 0 :(得分:18)
答案 1 :(得分:11)
答案 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;
}
即,
.*\.
所以:默认情况下贪婪,任何角色都可以匹配任何角色(因为贪婪),然后是文字点。