Java通过冒号在两侧拆分字符串

Java通过冒号在两侧拆分字符串,java,regex,Java,Regex,你能给我建议一种方法,我可以用它来分割一个字符串,就像: :31C:150318 :31D:150425 IN BANGLADESH :20:314015040086 所以我试着用 :[A-za-z]|\\d: 这是一种正则表达式,但它不起作用。请给我推荐一个正则表达式,我可以用它来拆分字符串,其中20、31C、31D等作为键,150318、150425(孟加拉国)等作为值 如果我使用string.split(“:”),那么它将无法达到我的目的。 如果字符串类似于: :31C:15031

你能给我建议一种方法,我可以用它来分割一个字符串,就像:

:31C:150318 
:31D:150425 IN BANGLADESH
:20:314015040086
所以我试着用

:[A-za-z]|\\d: 
这是一种正则表达式,但它不起作用。请给我推荐一个正则表达式,我可以用它来拆分字符串,其中20、31C、31D等作为键,150318、150425(孟加拉国)等作为值

如果我使用string.split(“:”),那么它将无法达到我的目的。 如果字符串类似于:

:31C:150318 
:31D:150425 IN BANGLADESH
:20:314015040086
字体20:我的价值观在这里


然后将其拆分为3个字符串,键20将与“我的值”关联,“在这里”将与键20不关联

尝试使用String类的split函数

String[] splited = string.split(":");
根据您的要求:

  String c = ":31D:150425 IN BANGLADESH:todasdsa";
    c=c.substring(1);
    System.out.println("C="+c);
    String key= c.substring(0,c.indexOf(":"));
    String value = c.substring(c.indexOf(":")+1);
    System.out.println("key="+key+" value="+value);
结果:

C=31D:150425 IN BANGLADESH:todasdsa
key=31D value=150425 IN BANGLADESH:todasdsa

您可以使用以下方法进行拆分:

^[:]+([^:]+):

您可以使用匹配机制而不是拆分,因为您需要匹配字符串中的特定冒号

在第一个冒号和第二个冒号之间获得2个组并在第二个冒号之后捕获所有内容的正则表达式如下所示

^:([^:]*):(.*)$
看。
^
将断言字符串的开头,
([^:]*)
将匹配并捕获到组1中除
以外的零个或多个字符,
(.*)
将匹配并捕获到组2中字符串的其余部分
$
将断言单行字符串末尾的位置(因为
匹配任何符号,但不匹配不带
Pattern.DOTALL
修饰符的换行符)


此演示的结果:
Key:20,Value:AND:HERE

在stringRegex上使用字符串类拆分函数作为拆分(“:”),应该是这样的:
([A-za-z0-9]+):(.+)
或此:
:([A-za-z0-9]{2,3}):(.+)
请解释您试图获得的最终输出,解密键20将与之关联“我的值”和“在这里”不会与键20关联。你的意思是你只需要按第二个
?看一下@michal.svec:WOW!!太棒了!!效果很好!谢谢老板。:)是的,我试过了,但是如果字符串像::20:我的值:在这里,那么你只想按第二个拆分::“如果我使用string.split(:”),那么它将无法达到我的目的。如果一个字符串像::20:MY VALUES:ARE HERE,那么它将拆分为3个字符串,键20将与“MY VALUES”关联,“ARE HERE”将与键20不关联。