Java 用正则表达式解析字符串
我有一串Java 用正则表达式解析字符串,java,regex,Java,Regex,我有一串 "name"=>"3B Ae", "note"=>"Test fddd \"33 Ae\" FIXME", "is_on"=>"keke, baba" 我想用java程序把它解析成 name 3B Ae note Test fddd \"33 Ae\" FIXME is_on keke, baba 注意,字符串的内容,即name,3B Ae,不是固定的。 有什么建议吗?由于引用规则,我不确定正则表达式(即使是具有负lookbehinds的PCRE)是否能够一致地解
"name"=>"3B Ae", "note"=>"Test fddd \"33 Ae\" FIXME", "is_on"=>"keke, baba"
我想用java程序把它解析成
name
3B Ae
note
Test fddd \"33 Ae\" FIXME
is_on
keke, baba
注意,字符串的内容,即name
,3B Ae
,不是固定的。
有什么建议吗?由于引用规则,我不确定正则表达式(即使是具有负lookbehinds的PCRE)是否能够一致地解析它。您可能希望使用一个或其他能够处理上下文无关语言的解析器。由于引用规则,我不确定正则表达式(即使是具有负lookbehinds的PCRE)是否能够一致地解析此内容。您可能需要使用一个或其他能够处理上下文无关语言的解析器。如果您:
- 替换=>为:
- 用{}包装整个字符串
{
"name": "3B Ae",
"note": "Test fddd \"33 Ae\" FIXME",
"is_on": "keke, baba"
}
如果您可以控制生成此字符串的过程,我强烈建议您使用标准格式,如JSON或XML,以便在另一端更容易解析。如果您:
- 替换=>为:
- 用{}包装整个字符串
{
"name": "3B Ae",
"note": "Test fddd \"33 Ae\" FIXME",
"is_on": "keke, baba"
}
如果您可以控制生成此字符串的过程,我强烈建议您使用标准格式,如JSON或XML,以便在另一端更容易解析。如果您可以确保数据(键或值)没有
=>
或,
(或找到一些不会出现的其他分隔符),解决方案非常简单:
- 将字符串按
您将获得拆分,
对键=>值
- 按
拆分键=>
值=>对
inputString
保持“name”=>“3B Ae”,“note”=>“Test fddd\”33 Ae\“FIXME”,“正在”=>“keke baba”
(例如来自文件)
(我已将
,
更改为;
从keke
和baba
之间)
如果您可以确保数据(键或值)没有
=>
或,
(或找到一些不会出现的其他分隔符),那么解决方案非常简单:
- 将字符串按
您将获得拆分,
对键=>值
- 按
拆分键=>
值=>对
inputString
保持“name”=>“3B Ae”,“note”=>“Test fddd\”33 Ae\“FIXME”,“正在”=>“keke baba”
(例如来自文件)
(我已将
,
更改为;
从keke
和baba
之间)
您的示例是一个输入字符串还是多个输入字符串?您的示例是一个输入字符串还是多个输入字符串?这真的很聪明(捕捉得很好),但是如果他不控制输入字符串呢?这真的很聪明(捕捉得很好),但是如果他不控制输入字符串呢,不会给出name=>值对,因为逗号可能出现在值内(例如“keke,baba”)@Moe,yes。如果您可以确保您的数据(键或值)没有a=>或a,并且我明确提到(我已将,改为;从keke和baba之间),那么我的答案就是这样开始的。如果OP对数据有控制权,这应该很容易做到,而且我认为这更简单(JSON的想法很酷),通过拆分,不会给出name=>值对,因为逗号可能出现在值内部(例如“keke,baba”)@Moe,yes。如果您可以确保您的数据(键或值)没有a=>或a,并且我明确提到(我已将,改为;从keke和baba之间),那么我的答案就是这样开始的。如果OP可以控制数据,这应该很容易做到,而且我认为这更简单(不过JSON的想法很酷)