我正在尝试拆分以下字符串:"'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作为单个匹配项返回?
答案 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]*)'")