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))
?请参阅