有谁知道"。* \ s *"和" [。\ s] *"在正则表达式?

时间:2015-08-07 14:44:08

标签: c# regex

我需要匹配两个通常用短划线连接的单词' - '有时为0,1或2个空格。我决定使用以下正则表达式模式来解决问题:[.\s]*

然而,这种模式与这种情况不符:" word1-word2" 以下模式解决了问题:.*\s*适用于所有情况。

所有情况:

字词1-WORD2
word1word2
word1 word2
word1 word2

我目前正在使用第二种模式,但我想知道它们之间的细微差别。如果有任何帮助我使用C#。

问候

3 个答案:

答案 0 :(得分:2)

.位于[]时,它与文字字符.匹配。

当它在[]之外使用时,它匹配除新行之外的任何字符。

您可以在此处看到解释:

但是,您可以考虑将\b\w*\s*-\s*\w*\b用于您的案例。请参阅https://regex101.com/r/cJ4kB9/3

上的示例

答案 1 :(得分:0)

你的正则表达式基本上是这样说:

.  // Match any character
*  // Zero or more times
\s // Matches any white space including space, tab, form-feed, etc.
*  // Those white spaces, tabs etc. can occur Zero or more times.

所以从它的外观来看,它基本上无法确定它旁边是否有第二个字。它还将验证:

word1 -

word1-

答案 2 :(得分:0)

[^\s]+[\s-]*[^\s]*

一些非空格字符,后跟0个或更多的空格/短划线组合,然后再显示几个非空格。