Java Regex解析命令字符串
将Java Regex解析命令字符串,java,regex,parsing,Java,Regex,Parsing,将字符串解析为java.util.Map的正则表达式是什么,其中字符串的定义格式如下: message_type={any_text}&message_number={digits}&code={digits}&id={digits}&message={any_text}×tamp={digits_with_decimal} 目标是生成带有消息类型、消息编号、代码、id、消息和时间戳键的映射 这是正则表达式可以解析的吗?或者这需要一个语法分析器
字符串
解析为java.util.Map
的正则表达式是什么,其中字符串的定义格式如下:
message_type={any_text}&message_number={digits}&code={digits}&id={digits}&message={any_text}×tamp={digits_with_decimal}
目标是生成带有消息类型、消息编号、代码、id、消息和时间戳键的映射
这是正则表达式可以解析的吗?或者这需要一个语法分析器
更新:
这与URI解析问题不同。此处的消息是一个正文字符串,因此可能在消息部分包含“&”。使用与“&”相同的拆分可能会导致错误的拆分
另外,
{}
正是需要用正则表达式替换的理想函数。我认为关键是使用惰性求值,下面应该做到这一点:
([a-zA-Z].*?={.*?})
从一个字母(小写或大写)开始,直到第一次出现“=”为止,然后获取包含大括号的值并重复
演示:
您不能使用标准库来解析查询字符串吗?请参阅,我对拆分的关注点是,消息部分可能包含“&”字符,从而导致它在此处拆分,这不是所需的输出。您可能需要编写更多有关要解析的数据的信息。会有断线吗?输入是否可以包含多个
message\u type
元素?格式已定义,没有重复的键,但是消息中没有实际的大括号,这就是想法