我试图解析下面的字符串:
* A。 BOSCOLO1,4,J。A. STARR2,N。LUNARDI4,C.ORI4,J.P.BENNETT,Jr3,V。JEVTOVIC-TODOROVIC2,3,4,
预期的输出低于:
* A。 BOSCOLO1,4
JA STARR2
N. LUNARDI4
C. C. ORI4
JP BENNETT,Jr3
V.V. JEVTOVIC-TODOROVIC2,3,4
我不能在分隔符(,)上拆分它们,因为它不一致。以上是名称后跟一个或多个数字。数字&之后的单词逗号直到下一个单词,不允许任何没有任何数字的名字。
我不知道如何编写REGEX。任何帮助将受到高度赞赏。
感谢
答案 0 :(得分:3)
您可以使用这样的正则表达式:;
[*A-Z]\D+\d+(,\d+)*
示例:
string data = "*A. BOSCOLO1,4, J. A. STARR2, N. LUNARDI4, C. ORI4, J. P. BENNETT, Jr3, V. JEVTOVIC-TODOROVIC2,3,4,";
MatchCollection matches = Regex.Matches(data, @"[*A-Z]\D+\d+(,\d+)*");
foreach (Match x in matches) {
Console.WriteLine(x);
}
输出:
*A. BOSCOLO1,4
J. A. STARR2
N. LUNARDI4
C. ORI4
J. P. BENNETT, Jr3
V. JEVTOVIC-TODOROVIC2,3,4