带有后缀的简单键值对的 Java 正则表达式

标签 java regex key-value keyvaluepair

考虑如下一组字符串:

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"

这些组是keyvalue 和(可选)suffix

附加要求:

  • 值(即“=”之后的部分)不一定是数字
  • “:”两边的任何空格都应该一次删除,不要回溯
  • “KB”和“K”字符串匹配不区分大小写
  • 捕获的组应始终具有相同的索引(理想情况下,键/值/后缀为 3 个组,所有匹配项具有相同的组索引)

很明显,像这样的简单表达式

  • ([^=]+) *: *([^=]+)

没有完全涵盖上述规范。

最佳答案

完全涵盖上述规范的正则表达式是:

^([^=]+?) *= *(.+?) *$

编辑

原来我错过了 K/KB 部分。这是修改后的版本:

^([^=]+?) *= *(.+?) *(KB?)? *$

关于带有后缀的简单键值对的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560829/

相关文章:

java - Forked Java VM 异常退出。 JUnit 测试?

java - 从 JAX-RS 服务发送重定向

python - 提高 python 正则表达式的性能

python - 如何创建嵌套字典键并从命名空间键值对列表中为它们分配值?

node.js - Node.js 的最快、非基于内存的多进程键值存储

java - 使用 Java 日志记录 API 配置根记录器

directory - Java 运行时环境的文件夹随更新而变化?

regex - 去正则表达式字符串验证

python - 在 Python 中查找多个子字符串之一的最有效方法是什么?

ruby-on-rails - 在 Ruby on Rails 中使用索引键获取数组值