考虑一组字符串,如下所示:
Memory size = 4,194,304 KB
Cache size= 32,768 K
Number of cores = 8
Note =4,000,000 KB is less than 4 GB
是否有一个通用且不太复杂的 Java 正则表达式完全匹配每个字符串并生成以下组?
"Memory size", "4,194,304", "KB"
"Cache size", "32,768", "K"
"Number of cores", "8"
"Note", "4,000,000 KB is less than 4 GB"
这些组是key
,value
和 (可选) suffix
。
其他要求:
- 值(即'='之后的部分)不一定是数字
- ':' 两侧的任何空格都应一次性删除,无需回溯
- “KB”和“K”字符串匹配不区分大小写
- 捕获的组应始终具有相同的索引(理想情况下,键/值/后缀为 3 个组,所有匹配项具有相同的组索引)
显然,一个简单的表达式
([^=]+) *: *([^=]+)
不完全涵盖上述规范。