C# 正则表达式,只能以零或多个空格开头
我想用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]*>”,但运气不好 这似乎是一个简单的问题,但我对正则表达式还
"> 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我已经添加了?是的,这正是我的意思,谢谢你的理解,抱歉没有说得更清楚。这似乎有效,所以我接受这个答案。谢谢你的帮助!是的,这正是我的意思,谢谢你的理解,很抱歉没有说得更清楚。这似乎有效,所以我接受这个答案。谢谢你的帮助!