2012-05-23 47 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()