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
在这里,我们将输入字符串的部分分为三部分

  • (xxxx yHz
    之前的所有内容都将位于正则表达式的第一部分(.*)。此第一部分可通过$1访问
  • \(
    是时钟速度之前的大括号。
    \
    是转义(
  • (.)Hz,下面包含带单位和逗号的时钟速度值。(.)的第二部分可通过$2访问
  • 第三个(*)用于时钟速度之后的所有内容。可通过$3访问

因此,我们只需要$2Hz就可以从字符串中提取时钟速度。

您可以将此正则表达式与模式类一起使用:

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

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

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


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

这将查找时钟速度,不需要括号:

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

第一组将包含数字本身

@AbhishekSimon:我当时正在解决问题,现在应该可以工作了。