C# 如何从结构化字符串中提取单词?
我有以下字符串:C# 如何从结构化字符串中提取单词?,c#,regex,string,C#,Regex,String,我有以下字符串: "select model (field1, field2, field3, ...)" 我想写一些东西来提取模型和字段所在的单词 例如: select Car (door, wheel, antenna) 方法1返回Car。 方法2返回列表/数组{door,wheel,antenna} 换句话说,我在寻找extractModel()和extractFields() 我觉得这里需要RegEx,但我不知道如何解决这个问题。这应该可以: var m = "select Car
"select model (field1, field2, field3, ...)"
我想写一些东西来提取模型和字段所在的单词
例如:
select Car (door, wheel, antenna)
方法1返回Car
。
方法2返回列表/数组{door,wheel,antenna}
换句话说,我在寻找extractModel()
和extractFields()
我觉得这里需要RegEx
,但我不知道如何解决这个问题。这应该可以:
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();
这应该起作用:
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();
这应该起作用:
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();
这应该起作用:
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();
另一个方向是:
select (\S*) \(([^)]*)
第二个匹配组是一个逗号分隔的列表,您可以在其上拆分
另一个方向:
select (\S*) \(([^)]*)
第二个匹配组是一个逗号分隔的列表,您可以在其上拆分
另一个方向:
select (\S*) \(([^)]*)
第二个匹配组是一个逗号分隔的列表,您可以在其上拆分
另一个方向:
select (\S*) \(([^)]*)
第二个匹配组是一个逗号分隔的列表,您可以在其上拆分
您的意思是“选择模型(字段1、字段2等)”是您的源字符串,并且您正在尝试捕获字符串中的值吗?是的!很抱歉没有说清楚。输入字符串的格式是否总是“
select$object($field[,$field[,…])
”?如果是这样的话,您是否尝试过构建一个能够捕获该值的正则表达式?是的,它始终位于该结构中。您的意思是“选择模型(字段1、字段2等)”是您的源字符串,并且您正在尝试捕获字符串中的值?是的!很抱歉没有说清楚。输入字符串的格式是否总是“select$object($field[,$field[,…])
”?如果是这样的话,您是否尝试过构建一个能够捕获该值的正则表达式?是的,它始终位于该结构中。您的意思是“选择模型(字段1、字段2等)”是您的源字符串,并且您正在尝试捕获字符串中的值?是的!很抱歉没有说清楚。输入字符串的格式是否总是“select$object($field[,$field[,…])
”?如果是这样的话,您是否尝试过构建一个能够捕获该值的正则表达式?是的,它始终位于该结构中。您的意思是“选择模型(字段1、字段2等)”是您的源字符串,并且您正在尝试捕获字符串中的值?是的!很抱歉没有说清楚。输入字符串的格式是否总是“select$object($field[,$field[,…])
”?如果是这样的话,您是否尝试过构建一个能够捕获它的正则表达式?是的,它总是在那个结构中。我会添加一个.Select(Trim).ToArray()
来修剪输入。关于这个.Select(=>.Trim())的几个要点代码>:(s
就足够了),您可以将其缩写为Select(Trim)
,并希望将此结果具体化(.ToList()
或.ToArray()
),因为您可能会在某个地方对其进行迭代,这将使多个枚举或其他操作安全可行。因此,请将其设置为。选择(Trim).ToList()
(或ToArray()
),您将获得我的投票权我习惯性地使用“u”这个词。同意添加的ToArray()。但是Select(Trim)
不起作用。我要添加一个.Select(Trim).ToArray()
来修剪输入。关于这个.Select(=>.Trim())的几个要点代码>:(s
就足够了),您可以将其缩写为Select(Trim)
,并希望将此结果具体化(.ToList()
或.ToArray()
),因为您可能会在某个地方对其进行迭代,这将使多个枚举或其他操作安全可行。因此,请将其设置为。选择(Trim).ToList()
(或ToArray()
),您将获得我的投票权我习惯性地使用“u”这个词。同意添加的ToArray()。但是Select(Trim)
不起作用。我要添加一个.Select(Trim).ToArray()
来修剪输入。关于这个.Select(=>.Trim())的几个要点代码>:(s
就足够了),您可以将其缩写为Select(Trim)
,并希望将此结果具体化(.ToList()
或.ToArray()
),因为您可能会在某个地方对其进行迭代,这将使多个枚举或其他操作安全可行。因此,请将其设置为。选择(Trim).ToList()
(或ToArray()
),您将获得我的投票权我习惯性地使用“u”这个词。同意添加的ToArray()。但是Select(Trim)
不起作用。我要添加一个.Select(Trim).ToArray()
来修剪输入。关于这个.Select(=>.Trim())的几个要点代码>:(s
就足够了),您可以将其缩写为Select(Trim)
,并希望将此结果具体化(.ToList()
或.ToArray()
),因为您可能会在某个地方对其进行迭代,这将使多个枚举或其他操作安全可行。因此,请将其设置为。选择(Trim).ToList()
(或ToArray()
),您将获得我的投票权我习惯性地使用“u”这个词。同意添加的ToArray()。但是选择(修剪)
不起作用。