使用C#和Regex我有一个奇怪的情况:
string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
MatchCollection collection = Regex.Matches(substr, @"[\d]*");
Run Code Online (Sandbox Code Playgroud)
在我的世界中,上面会给我一个包含6个结果的'集合'的结果.勉强我的集合包含12个结果,每秒结果是{}(空).
我试过把它重写为:
string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
Regex regex = new Regex(@"[\d]*");
MatchCollection collection = regex.Matches(substr);
Run Code Online (Sandbox Code Playgroud)
但它给了我完全相同的结果.我在这里错过了什么?
我正在使用.Net framework 4.5,C#
我相信问题在于你的*量词.它匹配零个或多个字符,这意味着空字符串在技术上是匹配的.您需要使用+量词,如下所示:
string substr = "9074552545,9075420530,9075662235,9075662236,9075952311,9076246645";
MatchCollection collection = Regex.Matches(substr, @"\d+");
// or
Regex regex = new Regex(@"\d+");
MatchCollection collection = regex.Matches(substr);
Run Code Online (Sandbox Code Playgroud)
它将确保仅返回具有一个或多个数字的字符串.
注意,我也放弃了[]你的角色类(),\d因为这里完全没必要.
进一步阅读:
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |