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

本文关键字:数字 字符串 一个 正则表达式 | 更新日期: 2023-09-27 18:30:30

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 位数字。我是正则表达式的绝对新手,所以我实际上没有自己的尝试。
最好的方法是什么?我应该使用正则表达式吗?
谢谢。

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

您可以使用类似正则表达式的内容:(.*)('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();

Daniël,

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

http://txt2re.com

问候利亚姆