0

我有这个字符串2 Intel(R) Itanium(R) Processor 9320s (1.66 GHz, 16 MB),我需要获得1.66 GHz ,这可能是时钟速度所具有的任何东西1600 MHz等等1.33 GHz

有什么帮助吗?

我正在尝试类似的东西\b\([\d\s\w\.]*,\b请给出你的建议

4

4 回答 4

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 就可以从您的字符串中提取时钟速度。

于 2012-07-23T06:45:42.737 回答
1

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

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

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

于 2012-07-23T06:46:44.033 回答
0

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

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

于 2012-07-23T06:48:04.017 回答
0

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

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

第 1 组将包含数字本身

于 2012-07-23T06:55:28.877 回答