1


我正在尝试解析以下字符串:

*一种。BOSCOLO1,4, JA STARR2, N. LUNARDI4, C. ORI4, JP BENNETT, Jr3, V. JEVTOVIC-TODOROVIC2,3,4,

预期的输出如下:

*一种。BOSCOLO1,4
JA STARR2
N. LUNARDI4
C. ORI4
JP Bennett, Jr3
V. JEVTOVIC-TODOROVIC2,3,4

我不能在分隔符 (,) 上拆分它们,因为它不一致。以上是后跟一位或多位数字的名称。单词后跟数字和逗号,直到下一个单词,并且不允许没有任何数字的名称。
我不知道如何为相同的 REGEX 编写。任何帮助将不胜感激。
谢谢

4

1 回答 1

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
于 2012-09-25T16:34:56.090 回答