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.Split()中的正则表达式排除_C#_Regex_String - Fatal编程技术网

C# C Regex.Split()中的正则表达式排除

C# C Regex.Split()中的正则表达式排除,c#,regex,string,C#,Regex,String,我正在为C中的regex.Split编写一个正则表达式。总体目标是解析一个不知道分隔符但知道关键字的文件。每一个不是关键词的单词都是一个条目。我不知道这些将如何界定。到目前为止,我正在使用: String[] list = Regex.Split(line, @"\W+"); 这非常有效,除了一个小警告,其中一项是连字符单词。是否有方法排除拾取-字符?使用否定字符类 String[] list = Regex.Split(line, @"[^-\w]+"); [^-\w]+与任何字符(但不

我正在为C中的regex.Split编写一个正则表达式。总体目标是解析一个不知道分隔符但知道关键字的文件。每一个不是关键词的单词都是一个条目。我不知道这些将如何界定。到目前为止,我正在使用:

 String[] list = Regex.Split(line, @"\W+");

这非常有效,除了一个小警告,其中一项是连字符单词。是否有方法排除拾取-字符?

使用否定字符类

String[] list = Regex.Split(line, @"[^-\w]+");
[^-\w]+与任何字符(但不是单词字符或连字符)匹配一次或多次的否定字符类


使用否定字符类

String[] list = Regex.Split(line, @"[^-\w]+");
[^-\w]+与任何字符(但不是单词字符或连字符)匹配一次或多次的否定字符类


下面是一个使用.NET正则表达式字符类减法的解决方案:

String[] list = Regex.Split(line, @"[\W-[-]]+");
将\W放入字符类中,然后使用减号和另一个方括号子集通知正则表达式引擎排除其中的某些元素


如果需要,可以在嵌套字符类中添加更多异常。

下面是一个使用.NET正则表达式字符类减法的解决方案:

String[] list = Regex.Split(line, @"[\W-[-]]+");
将\W放入字符类中,然后使用减号和另一个方括号子集通知正则表达式引擎排除其中的某些元素


如果需要,您可以在嵌套字符类中添加更多异常。

还有一个问题,这似乎不会过滤掉换行符。。。我似乎得到了list=Key项?:-\W+不是限制泛型类的.NET方法。应该使用字符类减法。出于某种原因,我在每个列表的末尾都会得到一个空白项。是的,在最后一个换行符上进行减法将得到一个空字符串作为元素。所以,首先做剥离,然后做拆分。还有一个问题,这似乎并没有过滤掉换行符。。。我似乎得到了list=Key项?:-\W+不是限制泛型类的.NET方法。应该使用字符类减法。出于某种原因,我在每个列表的末尾都会得到一个空白项。是的,在最后一个换行符上进行减法将得到一个空字符串作为元素。所以,首先做剥离,然后做分割。