java - key=(value) 语法的正则表达式

标签 java regex

我目前正在编写一个带有正则表达式的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:numbervalue:abc(kk)123)+status(open)
它应该是两对键值。

你们能建议改进上面的表达吗?

最佳答案

抱歉,正则表达式根本不可能。如果您想计算左括号和右括号的数量,一般来说,正则表达式不够好。您尝试解析的语言不是 regular language .

当然,可能有办法绕过这个限制。如果您向我们提供的背景信息和您一样少,我们就无法知道这一点。

关于java - key=(value) 语法的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357666/

相关文章:

regex - 从文档中提取信息,训练集不多

java - 如何制作带有不包含 ?<id>= 的操作 URL 的 HTML GET 表单?

Java - &0xff 将 8 到 31 的位表示为 1

java - 尝试将文件加载到 JList 时出现意外错误

python - 如何限制正则表达式的 findall() 方法

python - 更新字符串中间的数字

Java ASM 操作码 : "H_" prefixed mnemonics (e. g。 Opcodes.H_GETFIELD 与 Opcodes.GETFIELD)

java - 如何获取/设置 JdbcRealm 的盐

python 正则表达式: get end digits from a string

javascript - 正则表达式 - 使用仅匹配数字的量词匹配字符范围