Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从结构化字符串中提取单词?_C#_Regex_String - Fatal编程技术网

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()。但是
选择(修剪)
不起作用。