2013-08-30 45 views
0

我有一个字符串first=abc123,second=status,z=3,a=45745并且想要得到输出abc123,status,3,45745从逗号分隔的字符串读取=后的值

我可以尝试将其拆分为多个数组并获取值或将此字符串放入ArrayList并拆分以获取结果,但希望检查是否有人已经有一个不涉及大量数组创建的解决方案或操纵。就像一个可能有用的正则表达式。

〜TIA

+0

@Opt imusCrime OP提到了什么已经尝试过。寻找没有理由的替代:) –

+0

看看[模式](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)和[Matcher]( http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html)类。 –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ - 我认为这整个SO平台是建立在“向我们展示你已经尝试过的并且我们会帮助你”的基础上的,而不是“这是我面临的问题,请为我修复”。 – OptimusCrime

回答

1
.*?=([a-zA-Z0-9]*) 

Regular expression visualization

Edit live on Debuggex

这将工作。但是,为了使它更好,在=符号之后或之前对字符有一些限制?

例如,

[a-zA-Z]*?=([a-zA-Z0-9]*) 

Regular expression visualization

这将只检查是否有在平等的起点只能是字母标志,然后字母/数字后并忽略,都在一起。如果它不符合这些要求,将会失败。

如果你知道永远不会有一个数字=我会建议事情回答。

注意:您将需要的所有东西都将在正则表达式的调用捕获组(由()表示)中捕获。

+0

是的,一个数字永远不会出现在KEY中,但VALUE可以是字母数字。 – Ninja

+0

@Ninja'[a-zA-Z] *?=([a-zA-Z0-9] *)'这对你来说非常适合你。 – progrenhard

+0

是的。谢谢。 – Ninja

0

说明

此表达式将仅返回密钥值集合的值部分作为价值的阵列。

(?<=\w=)[^,]*Live Demo

enter image description here

示例文字

first=abc123,second=status,z=3,a=45745 

匹配

[0][0] = abc123 
[1][0] = status 
[2][0] = 3 
[3][0] = 45745