Java 正则表达式从Groovy中的字符串识别时钟速度
我有一个字符串Java 正则表达式从Groovy中的字符串识别时钟速度,java,regex,groovy,Java,Regex,Groovy,我有一个字符串2英特尔(R)安腾(R)处理器9320s(1.66 GHz,16 MB)我需要1.66 GHz,这可能是任何一个时钟速度像1600 MHz或1.33 GHz等的东西 有什么帮助吗 我正在尝试类似于\b\([\d\s\w\.]*,\b请给出您的建议 str = '''2 Intel(R) Itanium(R) Processor 9320s (1.66 GHz, 16 MB)''' extractedStr = str.replaceAll(/(.*)\((.*)Hz,(.*)/,'
2英特尔(R)安腾(R)处理器9320s(1.66 GHz,16 MB)
我需要1.66 GHz,这可能是任何一个时钟速度像1600 MHz
或1.33 GHz
等的东西
有什么帮助吗
我正在尝试类似于\b\([\d\s\w\.]*,\b
请给出您的建议
str = '''2 Intel(R) Itanium(R) Processor 9320s (1.66 GHz, 16 MB)'''
extractedStr = str.replaceAll(/(.*)\((.*)Hz,(.*)/,'$2Hz')
println extractedStr
在这里,我们将输入字符串的部分分为三部分
- 在
之前的所有内容都将位于正则表达式的第一部分(.*)。此第一部分可通过$1访问(xxxx yHz
是时钟速度之前的大括号。\(
是转义(\
- (.)Hz,下面包含带单位和逗号的时钟速度值。(.)的第二部分可通过$2访问
- 第三个(*)用于时钟速度之后的所有内容。可通过$3访问
因此,我们只需要$2Hz就可以从字符串中提取时钟速度。您可以将此正则表达式与模式类一起使用:
"\\d+(\\.\\d+)?\\s*.?Hz"
它将搜索一个十进制数,后跟可选空格和可选乘法器(我使用正则表达式中的任何字符-因为我只需要匹配它),并以“Hz”结尾。您可以使用这样的正则表达式:
\s+\(.+?),.+?\)$
。这将提取最后一组括号内的值并抛出第一个值(在您的例子中,是regex组中的1.66 GHz
),您可以稍后访问该组以提取值
然后,您可以查看教程,了解有关如何在groovy中匹配和访问正则表达式组的更多信息。这将查找时钟速度,不需要括号:
"(\\d+(?:\\.\\d+)?)\\s*.Hz"
第一组将包含数字本身@AbhishekSimon:我当时正在解决问题,现在应该可以工作了。