C#Regex包含星号等字样

时间:2012-02-29 14:16:13

标签: c# regex

我正在尝试拆分以下字符串:"'aaa bbb' 0.05 ccc 3* 20*0.1"

以便元素为:

0: aaa bbb
1: 0.05
2: ccc
3: 3*    
4: 20*0.1

然后我想循环每个结果。以下代码段处理前3个元素,但不处理最后两个元素:

Regex
    .Matches(input, @"(?<match>[-+]?[0-9]*\.?[0-9]+)|(?<match>\w+)|'(?<match>[\w\s]*)'")
    .Cast<Match>()
    .Select(m => m.Groups["match"].Value)
    .ToList()
    .ForEach(z => etc...

我应该在正则表达式中添加什么,以便将3 *和20 * 0.01作为单个匹配项返回?

2 个答案:

答案 0 :(得分:2)

此正则表达式以您希望的方式匹配表达式:

foreach (var s in Regex.Matches("'aaa bbb' 0.05 ccc 3* 20*0.1", @"('[^']*'|\S+)")) {
    Console.WriteLine(s);
}

生成此输出:

'aaa bbb'
0.05
ccc
3*
20*0.1

您需要做的就是检测一个值是否有单引号,并在必要时取消引用。

答案 1 :(得分:0)

以下将匹配所有5:

@"(?<match>[-+]?\d*\*(\d+\.?\d*)?)|(?<match>[-+]?\d+\.?\d*)|(?<match>\w+)|'(?<match>[\w\s]*)'")