2012-09-25 179 views
1


我试图解析字符串如下:正则表达式分割字符串

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

预期的输出是下面:

* A 。 BOSCOLO1,4
JA STARR2
N. LUNARDI4
C. ORI4
JP BENNETT,Jr3
五JEVTOVIC-TODOROVIC2,3,4

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

+0

逗号不能被用作分割炭因为逗号它实际上是字的一部分。也没有什么可以告诉正则表达式应该在哪里开始分割工作。你可以尝试使用数字。 –

+1

是它的喜欢的话跟着数字和逗号直到下一个单词。 – Burfi

+0

什么',Jr3' ......这实际困难的部分...... @Burfi是不符合“只有名字后面的数字”还有其他这样的字符串,或者是Jr3或JR [数字]唯一的可能? –

回答

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 
+0

感谢Guffa,我用不同的输入测试了上面的正则表达式,它的工作正常。非常感谢。 – Burfi

相关问题