如何从结构化字符串中提取单词?

时间:2015-09-05 16:13:06

标签: c# regex string

我有以下字符串:

"select model (field1, field2, field3, ...)"

我想写一些能够提取模型字段的词语。

例如:

select Car (door, wheel, antenna)

方法1返回Car。 方法2返​​回List / Array {door, wheel, antenna}

换句话说,我正在寻找extractModel()extractFields()

我觉得这里需要RegEx,但我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

这应该有效:

var m = "select Car (door, wheel, antenna)";
Regex r = new Regex(@"select\s+(.*)\s+\((.*)\)");
var model = r.Match(m).Groups[1].Value;
// untrimmmed:
// var fields = r.Match(m).Groups[2].Value.Split(',');
// trimmed:
var fields = r.Match(m).Groups[2].Value.Split(',').Select(s => s.Trim()).ToArray();

答案 1 :(得分:0)

另一个方向:

select (\S*) \(([^)]*)

第二个匹配组是一个以逗号分隔的列表,您可以拆分它。

http://rubular.com/r/ByLODRGVdy