正则表达式:使用一个18位数字解析特定字符串

时间:2012-04-10 09:49:43

标签: c# .net regex parsing

C#/。NET 4.0

我需要解析一个包含18位数字的字符串。我还需要左侧和右侧的子串 示例字符串:

string a = "Frl Camp Gerbesklooster 871687120000000691 OPLDN 2010 H1";
string b = "some text with spaces 123456789012345678 more text";

应该如何解析:

string aParsed[0] = "Frl Camp Gerbesklooster";
string aParsed[1] = "871687120000000691";
string aParsed[2] = "OPLDN 2010 H1";

string bParsed[0] = "some text with spaces";
string bParsed[1] = "123456789012345678";
string bParsed[2] = "more text";

字符串中间总是有18位数字。我是Regex的绝对新手,所以我实际上并没有尝试过自己的尝试 做这个的最好方式是什么?我应该使用正则表达式吗? 感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式:(.*)(\d{18})(.*)

此处的关键是使用{18}指定必须有完全18个数字并捕获组中的每个部分。

var parts = Regex.Matches(s, @"(.*)(\d{18})(.*)")
    .Cast<Match>()
    .SelectMany(m => m.Groups.Cast<Group>().Skip(1).Select(g=>g.Value))
    .ToArray();

答案 1 :(得分:0)

丹尼尔,

虽然回答了这个问题,但以下内容可能是学习Reg表达式的有用参考。

http://txt2re.com

此致 利安