2009-10-02 99 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]* 
相关问题