我需要匹配两个通常用短划线连接的单词' - '有时为0,1或2个空格。我决定使用以下正则表达式模式来解决问题:[.\s]*
然而,这种模式与这种情况不符:" word1-word2"
以下模式解决了问题:.*\s*
适用于所有情况。
所有情况:
字词1-WORD2
word1word2
word1 word2
word1 word2
我目前正在使用第二种模式,但我想知道它们之间的细微差别。如果有任何帮助我使用C#。
问候
答案 0 :(得分:2)
当.
位于[]
时,它与文字字符.
匹配。
当它在[]
之外使用时,它匹配除新行之外的任何字符。
您可以在此处看到解释:
[.\s]*
- https://regex101.com/r/cJ4kB9/1 .*\s*
- https://regex101.com/r/cJ4kB9/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个或更多的空格/短划线组合,然后再显示几个非空格。