正则表达式从Groovy中的字符串中识别时钟速度

时间:2012-07-23 06:35:33

标签: java regex groovy

我有这个字符串2 Intel(R) Itanium(R) Processor 9320s (1.66 GHz, 16 MB)我需要 1.66 GHz ,这可能是时钟速度有1600 MHz1.33 GHz

任何帮助?

我正在尝试类似\b\([\d\s\w\.]*,\b的内容请提出您的建议

4 个答案:

答案 0 :(得分:1)

str = '''2 Intel(R) Itanium(R) Processor 9320s (1.66 GHz, 16 MB)'''
extractedStr = str.replaceAll(/(.*)\((.*)Hz,(.*)/,'$2Hz')
println extractedStr

这里我们将输入字符串的部分分成三部分,

  • (xxxx yHz之前的所有内容都将出现在正则表达式的第一个(。*)部分中。第一部分可以通过$ 1访问。
  • \(是时钟速度前的开放式大括号。 \是逃避(
  • (。)Hz,后面包含带有单位和逗号的时钟速度值。 (。)的第二部分可以通过$ 2访问。
  • 第三个(。*)表示在时钟速度之后的所有内容。可以通过$ 3访问。

按照这个原则,我们只需要2Hz就可以从字符串中提取时钟速度。

答案 1 :(得分:1)

您可以将此正则表达式用于Pattern类:

"\\d+(\\.\\d+)?\\s*.?Hz"

它将搜索一个十进制数字,后跟可选空格和一个可选的乘数(我使用正则表达式中的任何字符 - 因为我只需要匹配它),并以“Hz”结束。

答案 2 :(得分:0)

您可以像这样使用正则表达式:\s+\((.+?), .+?\)$。这将提取最后一组括号中的值,并在正则表达式组中抛出第一个值(在您的情况下为1.66 GHz),您可以在以后访问该值以提取值。

然后,您可以查看this教程,了解有关如何在groovy中匹配和访问正则表达式组的更多信息。

答案 3 :(得分:0)

这将找到时钟速度而不需要括号:

"(\\d+(?:\\.\\d+)?)\\s*.Hz"

第1组将包含数字本身