2009-10-02 82 views
0

我有下面的代碼片段正則表達式中的字符串(直到空間)

cv_13221 IN OUT SYS_REFCURSOR, 

,只是想cv_13221出來。

我試過以下的正則表達式

cv_.*\s 

但它取我

cv_13221 IN OUT 

我能做些什麼,以使其停止在第一次出現\ S

我想這正則表達式夥伴

回答

1

使用一個不情願的Kleene而不是一個貪婪的封閉。通常,這是它的語法:

cv_.*?\s 

通常,克林閉包算(*)將匹配儘可能。不情願的Kleene封閉運營商(*?)儘可能少匹配。

4

嘗試:

cv_\S+ 

在 '\ S' 是指資本 'S':匹配非空格字符。當然,+意味着一個或更多。 或者:

cv_\d+ 

時,它總是下劃線之後來到位數:最好儘可能具體,你可以用正則表達式的時候。

+1

+1爲提供更好的選擇在正則表達式中更具體。我個人儘可能避免使用。*我自己,除非我特別需要一整行或任何東西。 – 2009-10-02 17:36:15

+0

@Platinum Azure:完全不同意! – 2009-10-02 17:37:47

2

*是貪婪的。它會在最後一個空間之前抓取儘可能多的東西。試試這個:

cv_[^\s]*