2012-05-23 43 views
2

我需要解析某些格式佈局後面的文本行中的某些信息。這是文本文件會怎樣看一個例子:需要幫助爲此場景創建正則表達式

A. This is option a    C. This is option c 
B. This is option b    D. This is option d 

在這一天結束時,所有我想要的是解析上述兩行後,我將不得不在我的C#代碼:

string OptionA = "This is option a"; 
string OptionB = "This is option b"; 
string OptionC = "This is option c"; 
string OptionD = "This is option d"; 

A.和C.(或B.和D.)之間的空格可以是一個製表符(\ t)或一個隨機數的空格。當逐句通過代碼和行被讀取,這是它的外觀:

"A.\tThis is option a\tC. This is option c" 

或者,它可能看起來像這樣

"A.\tThis is option a  C. This is option c" 

我可能需要一些幫助分解基於「\ t這行「或」C「之前的一些空格。如上例所示。

任何輸入將不勝感激。

回答

1

下面的正則表達式應該這樣做,

@"^([A-Z])[.](.+[^\s])\s+([A-Z])[.](.+)$" 

其中每行

  • 組[0]是整條生產線
  • 組[1]是第一個字母(例如A)
  • 組[2]是第一個選項(例如,這是選項A)
  • 組[3]是第二個字母(例如C)
  • 組[4]是第二個選項(例如這是選項C)
+0

感謝您的回覆。我會試一試,並會讓你知道結果。 – csoon1

+0

上述正則表達式按照建議工作。爲了解析每條信息,我只是簡單地跟着他在正則表達式下面描述的註釋。非常感謝Richard! – csoon1

0

給這個一掄:

[A-Z]\..*((\s){2,}|\t) 
0
[a-zA-Z][.]\s[\w\s]*\s 

會給你結果如A. This is option a,然後您可以解析以獲取選項字母和結果文本。您也可能希望從行中刪除尾隨空白.Trim()