2014-02-14 107 views
1

我想分割这个字符串" "109491: Navy/Red115138: Navy/Light Grey"Colour Codecolour name。数字是颜色代码,字符串包括\是颜色名称。我试过这个正则表达式"(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)",但它没有按照需要工作。有时它在Colour Code中返回空。分割字符串和数字

感谢

+0

你是什么意思 - 有时?特别是什么输入? – cacau

+0

请把你想分割的字符串 –

+0

其实我从Web服务中得到上面提到的字符串,但是我需要分别存储颜色代码和颜色名称,以便于特定的原因。 – Nasir

回答

1

尝试是这样的:

(?:(\d+):\s([^\d]+))+? 

这将捕获的数字和文本作为单独的捕获。

例如:

enter image description here

+0

您发布的屏幕截图来自哪里? – Jojo

+0

@Jojo我写的一个免费的正则表达式测试工具 - http://www.netregex.com/ – Lloyd

+0

这个应用看起来很酷,谢谢。 – Jojo

1

只需使用这样的:

(\d+[^\d]+) 

这是 “选择..然后其他任何东西,不是一个数字编号”。所以它匹配这样的:

109491: Navy/Red115138: Navy/Light Grey 
|______________||______________________| 

E.g:

var str = "109491: Navy/Red115138: Navy/Light Grey"; 
var matches = new List<string>(); 

foreach (Match match in Regex.Matches(str, @"(\d+[^\d]+)")) { 
    matches.Add(match.Value); 
} 

// matches[0] = 109491: Navy/Red 
// matches[1] = 115138: Navy/Light Grey