2011-03-21 366 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*>(?!>).*$確實匹配