2012-02-28 152 views
0

我有一个文本输入,上面写着匹配:正则表达式有几个条件

打印机从就绪状态去当满足以下条件的工作状态:
1.纸存在
2.连接正确
3.电源连接

如何解析此文本为三个子分区(1.源状态,2.目标状态,3.条件)?

是否有可能做到这一点使用reqular表达在C#中的匹配?

+0

你可以发现“号,然后点”用正则表达式,肯定的,但如果其中一个点是什么“有功率大于3.5 V”等?我怀疑这可能比明显更微妙 – 2012-02-28 06:48:51

+0

你需要这些匹配:“从”和“到”之间的文本,然后从“到”和“当”,然后是“符合:”之后的文本? – 2012-02-28 06:51:24

+0

@MarcGravell [0-9] | [a-z] [。]就足以让 – gout 2012-02-28 07:26:08

回答

3

使用下面

fromstate = Regex.Match(SubjectString, "from (.*?) state(.*?) to (.*?) state(.*?)are met:(.*)").Groups[0].Value; //from state 

tostate = Regex.Match(SubjectString, "from (.*?) state(.*?) to (.*?) state(.*?)are met:(.*)").Groups[2].Value; //to state 

conditions = Regex.Match(SubjectString, "from (.*?) state(.*?) to (.*?) state(.*?)are met:(.*)").Groups[4].Value; //conditions 
+0

的条件成立,如果在from和state之间存在更多单词,这将不起作用。 “从目前的工作状态”,有没有更好的方法来匹配。 – gout 2012-02-28 07:29:05

+0

@ user1237256当您提出问题时,您没有提供该信息。修改正则表达式来支持它。 – 2012-02-28 13:28:54

+0

提供更多测试用例 – PraveenVenu 2012-02-29 03:35:26