我有一個像下面的字符串:正則表達式來找到一個詞在句子
CREATE GLOBAL TEMPORARY TABLE some_temp_table_name
或
CREATE GLOBAL TEMPORARY TABLE some_temp_table_name something else
與我想去掉無論是在粗體字母的正則表達式。
我有以下的正則表達式
([a-z].*[\s]*)
我應該在正則表達式改變?
我有一個像下面的字符串:正則表達式來找到一個詞在句子
CREATE GLOBAL TEMPORARY TABLE some_temp_table_name
或
CREATE GLOBAL TEMPORARY TABLE some_temp_table_name something else
與我想去掉無論是在粗體字母的正則表達式。
我有以下的正則表達式
([a-z].*[\s]*)
我應該在正則表達式改變?
試試這個:
([A-Z\s]+)[a-z_]+\s?([a-z\s]+)
在Groovy中,你會做這樣的事情:
String clean
= yourString.replaceAll("([A-Z\s]+)[a-z_]+\s?([a-z\s]+)", "$1$2");
謝謝。這樣可行。但不是第一句話,我希望取詞後沒有空格。會改變你的答案([a-z _] +)對於這個要求是否正確? – Omnipresent 2009-09-01 03:33:16
我的錯誤 - 我最初的回答是錯誤的。請參閱我的更新。 – 2009-09-01 03:36:27
你的新正則表達式選擇整個字符串。而不僅僅是我希望的字詞。 – Omnipresent 2009-09-01 03:39:30
試試? :
([a-zA-Z\s]+TABLE)\s\b[a-zA-Z_]+\b(.*)
不幸的是,這似乎並不奏效。 – 2009-09-01 03:37:21
如果我的目標是提取lowcase部分我會做的紅寶石以下:
'CREATE GLOBAL TEMPORARY TABLE some_temp_table_name '.gsub(/[A-Z]/,'').gsub(/[\s]{2,}/, ' ').strip
根據您所提供的2例,下面應在Groovy工作:
def s1 = "CREATE GLOBAL TEMPORARY TABLE some_temp_table_name"
def s2 = "CREATE GLOBAL TEMPORARY TABLE some_temp_table_name something else"
def t1 = s1 =~ /CREATE GLOBAL TEMPORARY TABLE (\w+)/
def t2 = s2 =~ /CREATE GLOBAL TEMPORARY TABLE (\w+)/
assert "some_temp_table_name" == t1[0][1]
assert "some_temp_table_name" == t2[0][1]
你用什麼語言/框架來執行這個正則表達式? – 2009-09-01 03:37:55
對不起,我正在使用groovy – Omnipresent 2009-09-01 03:40:07