C# 试图理解正则表达式。需要帮助理解正则表达式吗

C# 试图理解正则表达式。需要帮助理解正则表达式吗,c#,regex,C#,Regex,我试图理解下面的正则表达式 ^(?!\s)(?!.*\s\s)[ A-Za-z0-9'-]{1,35}(?<!\s)$ 我认为这对查找没有影响。。它将始终返回true,因为这里使用的是贪婪搜索。 应该是 (?!.?\s\s):这意味着没有两个空格是连续的。 *这是为了在不四处张望的情况下匹配所有情况 .* ? 这使它成为一个懒惰的操作符,并考虑了在**的右侧写的情况。br>我认为这对查找没有影响。。它将始终返回true,因为这里使用的是贪婪搜索。 应该是 (?!.?\s\s):这意味

我试图理解下面的正则表达式

^(?!\s)(?!.*\s\s)[ A-Za-z0-9'-]{1,35}(?<!\s)$ 

我认为这对查找没有影响。。它将始终返回true,因为这里使用的是贪婪搜索。 应该是
(?!.?\s\s):这意味着没有两个空格是连续的。

*这是为了在不四处张望的情况下匹配所有情况

.* ? 这使它成为一个懒惰的操作符,并考虑了在**的右侧写的情况。br>

我认为这对查找没有影响。。它将始终返回true,因为这里使用的是贪婪搜索。 应该是
(?!.?\s\s):这意味着没有两个空格是连续的。

*这是为了在不四处张望的情况下匹配所有情况
.* ? 这使它成为一个懒惰的操作符,并考虑了在**的右侧写的情况。br>

表示字符串中不应有
2
相邻空格

*
将扫描字符串。
\s\s
将查找相邻空格。
是负前瞻的,所以当它找到这样一个字符串时会中断。请参阅演示

表示字符串中不应有
2
相邻空格

*
将扫描字符串。
\s\s
将查找相邻空格。
是负前瞻的,所以当它找到这样一个字符串时会中断。请参阅演示


检查右上角。检查右上角。谢谢回复。我已尝试使用正则表达式进行以下输入。“Abc Def”。正则表达式返回false。“Abc”和“Def”之间有3个空格@NJMR请告诉我您要匹配的确切字符串,以便我可以帮助您。。上面写的正则表达式肯定会失败。。因为它不正确..我不想匹配任何有前导、尾随和相邻空格的字符串。“^(?!\s)(?!.\s\s)[A-Za-z0-9'-]{1,35}(?@NJMR请查看是否使用此。*它表示匹配所有对象而不关心任何事情..如果使用。*?\s\s它表示匹配所有对象,但在检查右侧给定的条件之后,即\s\s和(?。*?\s\s)如果它包含两次\s\s,则表示向前看并返回false。如果要检查它是否有两个以上的空格,请使用此(?。*?\s{1,})…对于引用,请使用此…这是不正确的。
*
是贪婪的,但它允许正则表达式引擎回溯。因此,尽管在某些情况下,
*?
会更有效,但这会起作用。感谢您的回复。我已经尝试了正则表达式的以下输入。“Abc Def”。正则表达式返回false。在“Abc”和“Def”之间有3个空格“@NJMR请告诉我您要匹配的确切字符串,以便我可以帮助您..上面编写的正则表达式肯定会失败..因为它不正确..我不想匹配任何包含前导、尾随和相邻空格的字符串。“(?!!\s)(?!\s\s)[A-Za-z0-9'-]{1,35}”(?@NJMR看看你是否使用这个。*它意味着匹配所有,而不关心任何事情..如果你使用。*?\s\s它意味着匹配所有,但在检查右侧给定的条件之后,即\s\s和(?。*?\s\s),这整个意味着向前看,如果它包含两次\s\s,则返回false…。如果你想检查它是否有两个以上的空格,请使用这个(?!*?\s{1,})…为了参考,使用这个…这是不正确的。
*
是贪婪的,但它允许正则表达式引擎回溯。因此,这将起作用,尽管在某些情况下,
*?
将更有效。我做了一个示例应用程序,它接受正则表达式和主题字符串。对于给定的输入“(?!.\s\s)”“Abc Def“返回true。请注意,“Abc”和“Def”之间有2个空格。@NJMR u需要使用
^(?。*\s\s)。*$
以上面的“Abc Def”为例(有2个空格)。我的问题是。*将消耗第一个空间,而您只剩下一个空间。然后模式应该与主题匹配。我的理解正确吗?@NJMR.*将消耗,但随后返回,因为它必须匹配\s\s…因此它将留下d 2,以便d匹配可以发生。我做了一个示例应用程序,该应用程序接受正则表达式和主题字符串。对于给定的输入“(?!.*\s\s)”“Abc Def”返回true。请注意,“Abc”和“Def”之间有2个空格。@NJMR u需要使用
^(?)(.*\s\s)。*$
以上面的“Abc Def”为例(有2个空格)。我的问题是。*将消耗第一个空格,而您只剩下一个空格。那么模式应该与主题匹配。我的理解正确吗?@NJMR.*将消耗,但随后会返回,因为它必须匹配\s\s…所以它将留下d两个,以便进行d匹配
(?!.*\s\s)
(?!.*\s\s)