C# Regex-单引号之间的匹配空间

C# Regex-单引号之间的匹配空间,c#,regex,C#,Regex,需要“标记”包含空格且位于单引号内的空格。 如果我们有 'sdf-d3f', 'dfdf ', 'dfd fd' , ' dfdfd' , ' dfdfdf', 'df', 'sf9f' 申请 '[^\s]*' 第一个和最后一个和最后一个都很公平 如果我删除^,将一无所获。有人能解释一下为什么不起作用并提供一个正确的正则表达式吗?您的表达式将捕获除单引号中的空格以外的任何内容[^\s]表示任何字符,但为空格字符。像[^\s]*一样使用它将捕获所有非空格字符。在引号内使用它,例如“[^\s]

需要“标记”包含空格且位于单引号内的空格。 如果我们有

 'sdf-d3f', 'dfdf ', 'dfd fd' , ' dfdfd' , ' dfdfdf', 'df', 'sf9f'
申请

'[^\s]*'
第一个和最后一个和最后一个都很公平


如果我删除^,将一无所获。有人能解释一下为什么不起作用并提供一个正确的正则表达式吗?

您的表达式将捕获除单引号中的空格以外的任何内容
[^\s]
表示任何字符,但为空格字符。像
[^\s]*
一样使用它将捕获所有非空格字符。在引号内使用它,例如
“[^\s]*”
将捕获除引号内的空格以外的所有内容。这意味着,如果逗号之间没有空格,它也会捕捉到这些空格。当我玩你的数据时,你的表达式是如何工作的,删除中间的一些空间。< /P> 我相信以下是您应该采取的方法:

其中一个将在捕获带有空格的单词时包含引号:
'\s*\w*\s+\w*\s*'

\w
表示任何单词字符。使用
*
将捕获0个或多个字符,而使用
+
将捕获1个或多个字符。此表达式表示字符之间至少应有一个空格,并且字符的左侧或右侧可以有0个或多个空格,而所有这些空格都应位于单引号内。这也将抓住这些引语

如果您不需要引号,则可以不包含它们:
(?
Regex.Matches(text,@“[^']*”).Cast()。选择(x=>x.Value)。其中(y=>y.Any(z=>Char.IsWhiteSpace(z))
?请参阅