Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于拆分字符串的正则表达式_C#_Regex - Fatal编程技术网

C# 用于拆分字符串的正则表达式

C# 用于拆分字符串的正则表达式,c#,regex,C#,Regex,我正在尝试分析以下字符串: *A.BOSCOLO1,4,J.A.STARR2,N.LUNARDI4,C.ORI4,J.p.BENNETT,Jr3,V.JEVTOVIC-TODOROVIC2,3,4 预期产出如下: *A.BOSCOLO1,4J.A.STARR2N.LUNARDI4C.ORI4J.p.BENNETT,Jr3V.JEVTOVIC-TODOROVIC2,3,4 我不能在分隔符(,)上拆分它们,因为它不一致。以上是名称后跟一个或多个数字。单词后跟数字和逗号,直到下一个单词,不允许使用没有


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

*A.BOSCOLO1,4,J.A.STARR2,N.LUNARDI4,C.ORI4,J.p.BENNETT,Jr3,V.JEVTOVIC-TODOROVIC2,3,4

预期产出如下:

*A.BOSCOLO1,4
J.A.STARR2
N.LUNARDI4
C.ORI4
J.p.BENNETT,Jr3
V.JEVTOVIC-TODOROVIC2,3,4

我不能在分隔符(,)上拆分它们,因为它不一致。以上是名称后跟一个或多个数字。单词后跟数字和逗号,直到下一个单词,不允许使用没有数字的名称
我不知道如何为同样的代码编写正则表达式。任何帮助都将不胜感激。

谢谢

您可以使用这样的正则表达式:

[*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

逗号不能用作拆分字符,因为逗号实际上是单词的一部分。此外,也没有什么可以告诉正则表达式应该从哪里开始执行它的拆分任务。你可以试着用数字来代替。是的,它就像单词后面跟着数字和逗号,直到下一个单词。那么
,Jr3
。。。这才是真正困难的部分@Burfi是否还有其他类似的字符串不符合“名称后仅数字”,或者Jr3或Jr[数字]是唯一的可能性?不允许使用没有数字的单词。忘记我说的吧
,Jr
显然是名称的一部分,3只是一个数字。那么,除了Jr,还有什么字符串可以替代呢?谢谢Guffa,我已经用不同的输入测试了上面的正则表达式,它工作得很好。谢谢。