![](/img/trans.png)
[英]java- how to obtain name field in name-value pairs stored in a hashmap
[英]Parsing name-value pairs in Java
在Java中,是否有任何开放源代码解决方案,或用于从随机字符串中解析名称-值(键-值)对的通用正则表达式,并删除了(可选)定界符?
从用于解析名称值对的正则表达式中,这样的一个正则表达式可以是
"((?:\"[^\"]*\"|[^=,])*)=((?:\"[^\"]*\"|[^=,])*)"
但是,以上内容(及其在前面提到的问题上的变体)虽然按预期工作,但返回分隔符和值。
例如,像key="value"
这样的对将产生{key , “ value”}而不是{key,value} 。
后一种输出形式会更好,因为它避免了字符串后处理以删除封闭的定界符(在这种情况下为引号)。
如果要使表单坚持使用可选引号,而键或值捕获中不包含可选引号,则可以执行以下操作(以正则表达式为例,并包括可能的单引号作为分隔符)。
捕获缓冲区2,4包含键值对(不带引号)。
"
(['\"]?) ([^'\"=,]+) \1
=
(['\"]?) ([^'\"=,]+) \3
"
但这会收集可能的垃圾值,并以=号分隔。
我认为最好提供一个包含有限可接受价值的类。
我会用这样的东西。
"
(['\"]?) \s* (\w[-:\s\w]*?) \s* \1
\s* = \s*
(['\"]?) \s* (\w[-:\s\w]*?) \s* \3
"
可能的贪婪版本
\\w+ (?: \\s+[-:\\w]+ )*
要么
[-:\\w]+ (?: \\s+[-:\\w]+ )*
在这
"
(['\"]?) \s* (\w+(?:\s+[-:\w]+)*) \s* \1
\s* = \s*
(['\"]?) \s* (\w+(?:\s+[-:\w]+)*) \s* \3
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.