C# 正则表达式,只能以零或多个空格开头

C# 正则表达式,只能以零或多个空格开头,c#,.net,regex,C#,.net,Regex,我想用C#中的正则表达式匹配字符串。字符串前面只能有零个或多个空格,不允许有其他字符 有效字符串为: "> 5", " > 5" "1 > 5", "1> 3", ">> 3" 无效字符串包括: "> 5", " > 5" "1 > 5", "1> 3", ">> 3" 我现在有一个正则表达式: "\s*> " 我也试过“[\s*]>”和“[\s]*>”,但运气不好 这似乎是一个简单的问题,但我对正则表达式还

我想用C#中的正则表达式匹配字符串。字符串前面只能有零个或多个空格,不允许有其他字符

有效字符串为:

"> 5", " > 5"
"1 > 5", "1> 3", ">> 3"
无效字符串包括:

"> 5", " > 5"
"1 > 5", "1> 3", ">> 3"
我现在有一个正则表达式:

"\s*> "
我也试过
“[\s*]>”
“[\s]*>”
,但运气不好

这似乎是一个简单的问题,但我对正则表达式还不熟悉,在其他地方找不到答案


提前谢谢

我不认为您只是指“以0或更多空格字符开始”,因为每个字符串都是有效的,包括空字符串,因为它至少满足“以0空格开始”

查看示例输入,您的意思可能是“以0个或多个空格字符开头,后面紧跟一个
”。在这种情况下,这个正则表达式应该:

^\s*>[^>]*$

如果您需要匹配
符号后的内容,请将第二个
*
替换为
+

我认为您不是简单地指“以0或更多空格字符开始”,因为这样每个字符串都是有效的,包括空字符串,因为它至少满足“以0空格开始”

查看示例输入,您的意思可能是“以0个或多个空格字符开头,后面紧跟一个
”。在这种情况下,这个正则表达式应该:

^\s*>[^>]*$

如果您需要匹配
符号后的内容,请将第二个
*
替换为
+

这将实现以下功能:


^\s*>。+$

这将实现以下目的:


^\s*>。+$

^
开始表达式,以指示它被锚定到正在测试的字符串的开头。否则,与表达式匹配的任何子字符串都将意味着表达式被视为匹配,当然,每个子字符串都以零或更多空格开头(每个子字符串都以零或更多空格开头)。因此:

同样,如果要指定字符串的结尾,请使用
$
锚定到正在测试的字符串的结尾


如果测试的表达式包含换行符,则单线和多行选项会更改这些锚定的行为。

使用
^
启动表达式,以指示它锚定到正在测试的字符串的开头。否则,与表达式匹配的任何子字符串都将意味着表达式被视为匹配,当然,每个子字符串都以零或更多空格开头(每个子字符串都以零或更多空格开头)。因此:

同样,如果要指定字符串的结尾,请使用
$
锚定到正在测试的字符串的结尾


在测试表达式包含换行符的情况下,单线和多线选项会更改这些锚的行为。

^\s*>[^>]*$
'>35>23'


^\s*>(?!>).$
匹配

^\s*>[^>]*$
'>35>23'不匹配


^\s*>(?!>).$
是否匹配

如果表达式可以以“零或更多”空格开头,我有点困惑。这意味着,它可以以“零空格”开头,这意味着它可以以其他字符开头,对吗?请尝试\s+,尽管Johnsy是非常正确的,并且一些上下文可能会很有用。您必须锚定正则表达式。尝试“^\s*>”(无引号),您可能必须以某种方式(通常通过放置\\)避开\约翰西韦布,更新的问题,C#如果表达式可以以“零或更多”空格开头,我有点困惑。这意味着,它可以以“零空格”开头,这意味着它可以以其他字符开头,对吗?请尝试\s+,尽管Johnsy是非常正确的,并且一些上下文可能会很有用。您必须锚定正则表达式。试试“^\s*>”(不加引号),你可能不得不以某种方式(通常是通过放\\)逃避\约翰西韦布,更新的问题,C;#不太可能,
也会匹配第二个
,OP不想要。@BoltChock我已经添加了?字符不是真的,
也会匹配OP不想要的第二个
。@BoltChock我已经添加了?是的,这正是我的意思,谢谢你的理解,抱歉没有说得更清楚。这似乎有效,所以我接受这个答案。谢谢你的帮助!是的,这正是我的意思,谢谢你的理解,很抱歉没有说得更清楚。这似乎有效,所以我接受这个答案。谢谢你的帮助!