我目前正在编写一个带有正则表达式的java程序,但我正在努力,因为我对正则表达式还很陌生。
KEY_EXPRESSION = "[a-zA-z0-9]+";
VALUE_EXPRESSION = "[a-zA-Z0-9\\*\\+,%_\\-!@#\\$\\^=<>\\.\\?';:\\|~`&\\{\\}\\[\\]/ ]*";
CHUNK_EXPRESSION = "(" + KEY_EXPRESSION + ")\\((" + VALUE_EXPRESSION + ")\\)";
目标语法为key(value)+key(value)+key(value)
。键是字母数字,值可以是任意组合。
到目前为止一切都还好。但是,我对 '('
, ')'
的值有疑问。如果我将 '('
或 ')'
放入值中,则值将包含其余所有内容。
例如number(abc(kk)123)+status(open)
返回key:number
,value:abc(kk)123)+status(open)
它应该是两对键值。
你们能建议改进上面的表达吗?
最佳答案
抱歉,正则表达式根本不可能。如果您想计算左括号和右括号的数量,一般来说,正则表达式不够好。您尝试解析的语言不是 regular language .
当然,可能有办法绕过这个限制。如果您向我们提供的背景信息和您一样少,我们就无法知道这一点。
关于java - key=(value) 语法的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357666/