[英]Need help with a regular expression
我正在嘗試使用這樣的正則表達式:
string Size= "10.5M";
Match m = null;
if ((m = (new Regex(@"(\d)([MGTP%]?)", RegexOptions.IgnoreCase).Match(Size))).Success)
{
Size = m.Groups[1].ToString();
if (m.Groups.Count > 1)
SizeUnit = m.Groups[2].ToString(); // if not given, SizeUnit is percentage
}
但是當我傳遞值時,Size顯示為10,SizeUnit顯示為“”,而不是預期的Size = 10.5和SizeUnit = M
\\d
與'。'不匹配。 使用[0-9]+(\\.[0-9]+)?
代替。
\\d
字符類與數字字符匹配。 要將數字與小數部分匹配,例如在您的示例中,您需要:
+
量詞應用於\\d
; \\
對其進行轉義。 ?
將點和小數部分設為可選?
(零或一個)和*
(零或多個)量詞。 這樣的正則表達式可能適合您的需求:
(\d+\.?\d*)([MGTP%]?)
您的問題是您的表達式當前僅在一個數字上匹配,而在小數點及后續數字上不匹配。 我認為這會更好
if ((m = (new Regex(@"(\d*\.?\d*)([MGTP%]?)", RegexOptions.IgnoreCase).Match(Size))).Success)
{
Size = m.Groups[1].ToString();
if (m.Groups.Count > 1)
SizeUnit = m.Groups[2].ToString(); // if not given, SizeUnit is percentage
}
至少要匹配0個或多個數字,后跟一個“。” 后跟零個或多個其他數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.