正则表达式在一个句子中找到一个单词

时间:2009-09-01 03:27:55

标签: regex groovy

我有一个如下字符串:

CREATE GLOBAL TEMPORARY TABLE some_temp_table_name

CREATE GLOBAL TEMPORARY TABLE some_temp_table_name something else

使用正则表达式我想删除任何粗体字母。

我有以下正则表达式

([a-z].*[\s]*)

我应该在正则表达式中改变什么?

4 个答案:

答案 0 :(得分:1)

试试这个:

  

([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");

答案 1 :(得分:1)

根据您提供的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]

答案 2 :(得分:0)

尝试? :

([a-zA-Z\s]+TABLE)\s\b[a-zA-Z_]+\b(.*)

答案 3 :(得分:0)

如果我的目标是提取小写部分,我会在ruby中执行以下操作:

'CREATE GLOBAL TEMPORARY TABLE some_temp_table_name '.gsub(/[A-Z]/,'').gsub(/[\s]{2,}/, ' ').strip