正则表达式从字符串中获取温度

时间:2017-04-26 17:23:00

标签: regex groovy

我有一个如下字符串:

blabla world 2 temp 3*C 

我想只抓住3 * C部分。所以正则表达式必须删除其他所有内容。我有一个替换函数应该删除除了正则表达式模式之外的所有其他函数(在这种情况下只保留3 * C并从字符串中删除其他所有内容)

编辑:

Groovy代码:

if(contains(activity, "*C")){
    replace(activity,"[^\\d.](\\*C)","",true)
}

但这取代了与#34;"的匹配。我只想取代比赛。

编辑2:

正则表达式也必须适用于十进制数。例如:3.5 * C

1 个答案:

答案 0 :(得分:2)

您可以使用匹配的方法:

String s = "blabla world 2 temp 3*C"
def m = s =~ /\b\d*\.?\d+\*C\b/
println(m[0])

请参阅Groovy demo

如果整个部分不能缺席,请使用

def m = s =~ /\b\d+(?:\.\d+)?\*C\b/

<强>详情

  • \b - 领先的字边界
  • \d* - 0+位数
  • \.? - 一个可选的点
  • \d+ - 1+位数
  • \* - 星号
  • C - C
  • \b - 尾随字边界

替代方法中的(?:\.\d+)?匹配?后跟1个数字的1或0次出现(由于末尾为.量词)。