2011-11-13 82 views
0

我有很多不同格式的输入字符串,我需要将输入字符串分成3个部分。下面是一些例子(虽然有几种可能性):用于将字母数字字符串拆分为3个部分的正则表达式?

1A1 = 1,A,1

123AA44 = 123,AA,44

AA44 =空,AA,44

44AA = 44,AA,空

对这些部分的附加约束条件:

  • 第一部分是上LY数字和是1-4个字符长
  • 第二部分仅α和长1-3字符
  • 第三部分可以是数字或字母数字和是1-4个字符长

我用下面的代码达到了我的正则表达式知识的最后。它适用于每种情况,除非输入中的3个部分之一留空。需要一些帮助!谢谢。

Regex regex = new Regex("(?<Section1>[0-9]{1,4})(?<Section2>[a-zA-Z]{1,3})(?<Section3>[0-9a-zA-Z]{1,4})"); 
Match match = regex.Match(inputString); 

string 1 = match.Groups["Section1"].Value; 
string 2 = match.Groups["Section2"].Value; 
string 3 = match.Groups["Section3"].Value; 
+0

你怎么区分第3部分第2?第三部分是否总是以字母开头? – pauloya

+0

第二部分总是以字母结尾,第三部分始终以数字 – Borophyll

回答

2

你试过这个吗?

Regex regex = new Regex("(?<Section1>[0-9]{0,4})(?<Section2>[a-zA-Z]{0,3})(?<Section3>[0-9a-zA-Z]{1,4})"); 
+0

开头,哈哈这么简单,但是是这样做的!谢谢! – Borophyll

+0

是的,这确实更有意义!你刚刚错过了最后一节的零点。 – pauloya

0

它应该足以为每个部分添加一个可选项。
我添加了此规则,以第3节开始与一些

Regex regex = new Regex("(?<Section1>[0-9]{1,4})?(?<Section2>[a-zA-Z]{1,3})?(?<Section3>[0-9][0-9a-zA-Z]{0,3})?"); 
相关问题