我正在解析一个excel文档,一列包含每行的n个序列号,用空格分隔。
样品系列:1108656 1108657 1108658 1108659 1108660 1108661 1108662 1108663 1108664 1108665 1108666
我如何使用正则表达式来分析该字符串并返回List或IEnumerable,其中样本中的每个序列号都是一个单独的元素?
序列号的长度在5到8之间。
我正在使用C#和.Net Regex。
答案 0 :(得分:3)
如果字符串只是以空格分隔的数字,我建议使用这样的String.Split
方法:
string[] mySerialNumbers = searchString.Split(new char[]{' '});
请参阅String.Split的文档。
要将结果设为IEnumerable
,您只需创建一个结果为List<string>
的{{1}},如下所示:
String.Split
编辑:
阅读评论后,Regex方式确实会对输入进行验证,以确保没有其他字符存在,这是一件好事。这方面的正则表达式就像这样简单:
List<string> mySerialNumbers = new List<string>(searchString.Split(new char[]{' '});
正则表达式[0-9] {5,8}表示重复5到8次的任何数字。当然,这个正则表达式非常简单,只会抓住好东西。例如,如果使用1234567 abcd 7654321不会给出任何错误,它将简单地捕获2个数字并默默地忽略这些字母。您可以制作更复杂的正则表达式来进行更好的验证。这可能是正则表达式的一个可靠的起始参考:http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet
答案 1 :(得分:-1)
可以在这里使用Regex.Split方法
string[] SerialNum = Regex.Split("yourStringVar", " ")