2012-04-18 305 views
13

嗨我幾乎是新的正則表達式...所以,也許我的問題很簡單,但我找不到解決方案!正則表達式 - 匹配後只允許空格或空格

我正在寫一個正則表達式模式,用於查看用戶的寫作,並用另一種顏色繪製所創建的匹配。 我想例如用另一種顏色繪製,如果用戶寫的是這樣的:

foo() 

的事情是,我不想畫,如果用戶以後寫入別的東西,我的意思是,如果用戶只寫

"foo()" (or "foo() ") 

那很好,我要畫它,但是如果用戶寫

"foo()d" 

我不想油漆,因爲現在寫得很好 爲了我。

我已經寫了匹配「foo()」(或者也帶有一個點在中間,如「foo.foo()」)的正則表達式模式,但我面對的是這個問題。 我需要的東西添加到我的模式只允許一個空間,或沒有(如果用戶寫的東西后,否則「)」我不想與之相匹配的) 這是我的模式:

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\) 

非常感謝!

+1

這並不完全清楚你在問什麼。這之後有沒有人物?如果沒有,你可以用'\ s?$'結束你的正則表達式。 – 2012-04-18 15:01:10

+0

沒錯,這是行不通的,因爲我想讓用戶繼續寫... – gezequiel 2012-04-18 15:11:58

回答

12

大衛·布拉班特是接近的,但是我覺得你真的想嘗試(?!\S)結束你的正則表達式 - 這將意味着你匹配任何沒有非空白字符的東西。如果您只想匹配空格而不是空格,請使用(?![^ ])

+0

由於您是Regex的新手,您可能還不知道^和$符號。他們是線路錨。例如,如果你的正則表達式是「^ foo()[]?$」,它將匹配整個行的「foo()」和「foo()」。 – Scen 2012-04-18 16:10:40

+0

是的,我知道這些符號,但它不適用於我的情況... – gezequiel 2012-04-18 17:09:38

0

[AZ] [AZ](( 「[^」 \ r \ n]的「?| - [。]?[] \ B \ d + \ d \ B))。?[] ?

添加[]?應該這樣做。?用於1或0,[]將只匹配空間。

此外,[\ S]?會工作爲所有類型的空白(包括標籤。)

+0

這不行,好像下一個字符不是白色空格,它會匹配空格零次。我認爲gezequiel想要失敗,如果他匹配'\ S',即非空白字符。 – 2012-04-18 14:59:40

+0

啊謝謝阿德,應該更徹底地閱讀這個問題。 – Scen 2012-04-18 16:07:05

0

這似乎是你在找什麼,根據我的正則表達式測試儀:

在正則表達式以上

(\w+)(\.*)(\(\))+(\s)*(?!.) 

的重要組成部分,爲您的是::0

如果你想允許一個以上的空間,使用此:提前

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)([ ]*)(?!.) 
4

使用負的樣子(\ S)*()

(\ s)*:?!後跟0或多個空格 ():?!沒有其他字符

+0

這太棒了!謝謝! – gezequiel 2012-04-18 15:12:34

+0

+1:很好的答案!完美的作品。 – 2012-04-18 15:23:30

+0

@gezequiel:查看我以前的評論。你需要做一點小小的調整。 – 2012-04-18 15:28:10

0

您可以嘗試添加:

\ s *%?

\ S *:零或多個空格

%表示:字符串的結尾

相關問題