有一段內容包含如下文字:
正視眼使近處物體發出的發散光線經眼屈折后成像在視網膜上,方能看清近處物體,稱此作用為調節。為了看清近距離的目標,通過眼內肌肉——睫狀肌的收縮,使眼內晶狀體彎曲度增加,從而增強了眼的屈光力,使近距離物體在視網膜上形成清晰的影像,這種為看清近物
調理之前,左:4.83 右:4.62 雙眼 5.03
調理之后,左:4.9 右:4.84 雙眼 5.0
調節視力的方法有很多,比如不要長時間的玩手機和電腦,如果出現眼疲勞的情況,可以適當的對眼部進行按摩,多看遠處,綠色的植物,多到戶外運動
現在需要把其中:
調理之前,左:4.83 右:4.62 雙眼 5.03
調理之后,左:4.9 右:4.84 雙眼 5.0
里面的六個資料按照順序提取出來, 沒寫過類似的正則,請支持,謝謝
uj5u.com熱心網友回復:
string str = "調理之前,左:4.83 右:4.62 雙眼 5.03 調理之后,左:4.9 右:4.84 雙眼 5.0 ";Regex regex = new Regex("(\\d+(\\.\\d+)?)");
var matches = regex.Matches(str);
List<string> list = new List<string>();
for (int i = 0; i < matches.Count; i++)
{
list.Add(matches[i].ToString());
}
uj5u.com熱心網友回復:
string src = @"正視眼使近處物體發出的發散光線經眼屈折后成像在視網膜上,方能看清近處物體,稱此作用為調節。為了看清近距離的目標,通過眼內肌肉——睫狀肌的收縮,使眼內晶狀體彎曲度增加,從而增強了眼的屈光力,使近距離物體在視網膜上形成清晰的影像,這種為看清近物
調理之前,左:4.83 右:4.62 雙眼 5.03
調理之后,左:4.9 右:4.84 雙眼 5.0
調節視力的方法有很多,比如不要長時間的玩手機和電腦,如果出現眼疲勞的情況,可以適當的對眼部進行按摩,多看遠處,綠色的植物,多到戶外運動";
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(src, @"(?n)調理之前\D+(?<before_left>\d+(\.\d+)?)\D+(?<before_right>\d+(\.\d+)?)\D+(?<before_both>\d+(\.\d+)?)\s*調理之后\D+(?<after_left>\d+(\.\d+)?)\D+(?<after_right>\d+(\.\d+)?)\D+(?<after_both>\d+(\.\d+)?)");
if (match.Success)
{
MessageBox.Show($"前L:{match.Groups["before_left"].Value}" + Environment.NewLine +
$"前R:{match.Groups["before_right"].Value}" + Environment.NewLine +
$"前B:{match.Groups["before_both"].Value}" + Environment.NewLine +
$"后L:{match.Groups["after_left"].Value}" + Environment.NewLine +
$"后R:{match.Groups["after_right"].Value}" + Environment.NewLine +
$"后B:{match.Groups["after_both"].Value}" + Environment.NewLine);
}
uj5u.com熱心網友回復:
match.Groups["before_left"].Valuematch.Groups["before_right"].Value
match.Groups["before_both"].Value
match.Groups["after_left"].Value
match.Groups["after_right"].Value
match.Groups["after_both"].Value
這些就是你要的結果
uj5u.com熱心網友回復:
感謝您的回復,您的運算式我們測驗好一會兒,有個比較風險的地方,你這個實際是分別找到關鍵字 調理之前 和 調理之后的三組數字,但如果用戶在描述的程序中也額外存在數字可能就會產生錯誤, 比如用戶輸入:調理之前,左:4.83 右:4.62 雙眼 5.03, 存在誤差
調理之后,左:4.9 右:4.84 雙眼 5.0
那您這個決議的時候結果就是空

uj5u.com熱心網友回復:
實際測驗標明如果在調理之后哪怕增加一個逗號都會無法提取到資料uj5u.com熱心網友回復:
string src = @"正視眼使近處物體發出的發散光線經眼屈折后成像在視網膜上,方能看清近處物體,稱此作用為調節。為了看清近距離的目標,通過眼內肌肉——睫狀肌的收縮,使眼內晶狀體彎曲度增加,從而增強了眼的屈光力,使近距離物體在視網膜上形成清晰的影像,這種為看清近物調理之前,左:4.83 右:4.62 雙眼 5.03,
調理之后,左:4.9 右:4.84 雙眼 5.0,
調節視力的方法有很多,比如不要長時間的玩手機和電腦,如果出現眼疲勞的情況,可以適當的對眼部進行按摩,多看遠處,綠色的植物,多到戶外運動";
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(src, @"(?n)調理之前\D+(?<before_left>\d+(\.\d+)?)\D+(?<before_right>\d+(\.\d+)?)\D+(?<before_both>\d+(\.\d+)?)\D*調理之后\D+(?<after_left>\d+(\.\d+)?)\D+(?<after_right>\d+(\.\d+)?)\D+(?<after_both>\d+(\.\d+)?)");
if (match.Success)
{
MessageBox.Show($"前L:{match.Groups["before_left"].Value}" + Environment.NewLine +
$"前R:{match.Groups["before_right"].Value}" + Environment.NewLine +
$"前B:{match.Groups["before_both"].Value}" + Environment.NewLine +
$"后L:{match.Groups["after_left"].Value}" + Environment.NewLine +
$"后R:{match.Groups["after_right"].Value}" + Environment.NewLine +
$"后B:{match.Groups["after_both"].Value}" + Environment.NewLine);
}
}
uj5u.com熱心網友回復:
好像還是差不多,比如:調理之前,左:4.83 右:4.62 雙眼 5.03, 誤差0.3,
調理之后,左:4.9 右:4.84 雙眼 5.0,
就提取不到值了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/283847.html
標籤:C#
下一篇:獲取系統中已經安裝的輸入法
