我有这个字符串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
的内容请提出您的建议
答案 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访问。\(
是时钟速度前的开放式大括号。 \
是逃避(
按照这个原则,我们只需要2Hz就可以从字符串中提取时钟速度。
答案 1 :(得分:1)
您可以将此正则表达式用于Pattern类:
"\\d+(\\.\\d+)?\\s*.?Hz"
它将搜索一个十进制数字,后跟可选空格和一个可选的乘数(我使用正则表达式中的任何字符 - 因为我只需要匹配它),并以“Hz”结束。
答案 2 :(得分:0)
您可以像这样使用正则表达式:\s+\((.+?), .+?\)$
。这将提取最后一组括号中的值,并在正则表达式组中抛出第一个值(在您的情况下为1.66 GHz
),您可以在以后访问该值以提取值。
然后,您可以查看this教程,了解有关如何在groovy中匹配和访问正则表达式组的更多信息。
答案 3 :(得分:0)
这将找到时钟速度而不需要括号:
"(\\d+(?:\\.\\d+)?)\\s*.Hz"
第1组将包含数字本身