我需要幫助來解析大量文本中的一些信息,基本上我正在導入一個PSD文件,並且想從中解析一些數據。在C#中的困難(對我來說)字符串解析(正則表達式?)
當中的文字是字符串,如這樣的:
\ r \ nj78876隨機文本STRINGS£75
現在我要做的就是搶適合這種格式的字符串(也許起始「\ r \ n」和結尾「£」可以是分隔符),並在開始時獲得代碼(j78876)和結束時的價格()。注意價格可能是更多的數字,即2。
我想然後抓住代碼,如j78876和每個字符串這樣的價格,因爲它們會發生多次(不同的代碼和價格)。
任何人都可以提出一種方法來做到這一點?
我對Regex不太熟練,所以指導會很棒。
謝謝。
注意:下面是實際文本的縮略圖(實際文件中有很多)。
提及此戰爭安西安娜提及此戰爭的3Com/H3CLibellé雷馬克大獎賽恩€\ r \ nJ9449A HP V1810-8G 交換機139.00 \ r \ nJ9450A HP V1810-24G開關359,00 \ r \ nEdge交換機 - 管理\ r \ nHP Layer 2交換機 - 託管式可堆疊交換機和機箱\ r \ nHP交換機2510系列\ r \nRéférenceAncienne référence3Com/H3CLibelléRemarque Prix en€\ r \ nJ9019B HP E2510-24交換機359,00 \ r \ nJ9020A HP E2510-48交換機599,00 \ r \ nJ9279A HP E2510-24G交換機779,00 \ r \ nJ9280A HP E2510-48G交換機1 569,00 \ r \ nHP交換機2520系列\ r \nRéférenceAncienneréférence 3Com/H3CLibelléRemarque Prix zh_CN \ r \ nJ9137A HP E2520-8-PoE交換機489,00 \ r \ nJ9138A HP E2520-24-PoE交換機779,00 \ r \ nJ9298A HP E2520-8G-PoE交換機749,00 \ r \ nJ9299A HP E2520- 24G-PoE交換機1 569,00 \ r \ nHP第2層和第3層交換機 - Managed Stackables and Chassis \ r \ n RBP僅爲推薦價格。 \ r \ NHP交換機2600系列\ r \ n參考安西安娜
更新 我發現這一點:
[\\r\\n](\w\d+\w).*?(\d+,\d\d)[\\r\\n]
爲我工作在正則表達式瀏覽器的測試,但不會在我的C#代碼工作
Regex reg = new Regex(@"[\\r\\n](\w\d+\w).*?(\d+,\d\d)[\\r\\n]", RegexOptions.IgnoreCase);
Match matched = reg.Match(str);
if (matched.Success)
{
string code = matched.Groups[1].Value;
string currencyAmt = matched.Groups[2].Value;
}
最終更新: 在瀏覽器測試人員中,我不得不雙倍轉義\ r \ n - 在我的代碼中,這是沒有必要的。然後循環我使用循環答案的組。
foreach (Match match in Regex.Matches(content, @"[\r\n](?<code>\w\d+\w).*?(?<price>\d+,\d\d)[\r\n]", RegexOptions.IgnoreCase))
{
string code = match.Groups["code"].Value;
string currencyAmt = match.Groups["price"].Value;
}
你的意思是75的價格? – Marlon 2011-03-22 17:03:59
這真的取決於「隨機文本字符串」可以包含哪些字符 - 包括空白信息。 – Jon 2011-03-22 17:06:47
嗨喬恩,是的隨機文本是各種文本 - 段與空格,回車「\ r \ n」的等,但不包含英鎊符號 - 所以我想尋找一個「英鎊」和回到「\ r \ n」充當字符串令牌分隔符的種類。 – Simon 2011-03-22 17:37:49