2011-03-21 371 views
0

我想在C#中使用正则表达式匹配字符串。该字符串只能有零个或多个空格,而不能有其他字符。正则表达式,只能从零或多个空格开始

有效的字符串为:

"> 5", " > 5" 

无效的字符串是:

"1 > 5", "1> 3", ">> 3" 

我现在所拥有的正则表达式:

"\s*> " 

我自己也尝试"[\s*]> ""[\s]*> "但没有运气。

这似乎是一个简单的问题,但即时通讯新鲜的正则表达式,我没有找到答案在别处。

在此先感谢!

+0

[当问正则表达式的问题,随时添加标签为特定的编程语言或工具(例如,Perl,Python和或Java;六, emacs或ɢɴᴜgrep;等等)您正在使用。](http://stackoverflow.com/tags/regex/info) – Johnsyweb 2011-03-21 10:12:13

+1

如果表达式可以以“零个或多个”空格开始,那么我有点困惑。这意味着,它可以从“零空白”开始,这意味着它可以以其他字符开头吗? – Chris 2011-03-21 10:13:15

+0

Try \ s +虽然Johnsy是非常正确的,一些情况下会有用。 – nimizen 2011-03-21 10:14:10

回答

4

我不认为你只是意味着“从0开始或更多的空白字符”,因为那时每串将是有效的,包括空字符串,因为它满足至少“从0开始的空白”。看看你的示例输入,也许你的意思是“从0或更多的空白字符开始,后面跟着正好一个>”。在这种情况下,这个正则表达式应该这样做:

^\s*>[^>]*$ 

+更换第二*如果您需要>符号后匹配的东西。

+0

是的,这正是我的意思,感谢理解和抱歉,因为没有更清楚。它似乎工作,所以我接受这个答案。谢谢你的帮助! – Andreas 2011-03-21 10:25:42

0

这将这样的伎俩:

^\s*>.+?$

+0

不是,'.'会与OP不想要的第二个'>'匹配。 – BoltClock 2011-03-21 10:20:50

+0

@BoltChock我添加了?字符 – Stephan 2011-03-21 10:43:56

1

^开始你的表达,以表明它锚定到被测试的字符串的开始。否则,与表达式匹配的任何子字符串都将意味着表达式计数为匹配,当然,每个子字符串都以零或多个空格开始(每个子字符串以零或多个任何内容开始)。因此:

^\s*> 

同样,如果你需要指定哪些字符串可以结束了,然后用$锚定到字符串的结尾正在测试中。

在包含换行符的测试表达式中,单行和多行选项可更改这些锚点的行为。

+0

+1的好解释!谢谢 – Andreas 2011-03-21 10:27:41

0

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

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