我们可以编写一个正则表达式,它从冒号(:)分隔的字符串中提供子字符串吗?

时间:2013-08-21 11:54:57

标签: regex

我需要编写正则表达式,它可以通过以下格式从字符串中给出子串:

 String s1 = 123:4567:1:2

我想要四种不同的表达方式作用于s1

  • 一个可以给我123
  • 一个可以给我4567
  • 的人
  • 一个可以给我1个
  • 一个可以给我2

我尝试了很多选项,但无法编写符合我上述要求的正确选项。在java中使用字符串方法,这是第二个工作,但不需要使用java逻辑...

2 个答案:

答案 0 :(得分:1)

您可以在java

中使用方法split
String s1 = '123:4567:1:2';
// put the result in an array of strings
String[] results = s1.split(':');
//result[0] will be equal to '123'
//result[1] will be equal to '4567'
//result[2] will be equal to '1'
//result[2] will be equal to '2'

答案 1 :(得分:1)

在Java中,您可以通过使用Regex库来实现这一目标:

import java.util.regex.*;
...
Pattern p = Pattern.compile("(\\d+):?");
Matcher m = p.matcher(s1); // s1 would be your string
while(m.find())
{
    m.group(1); // here sits the value you want to extract.
                // in loop 1 the first one in loop 2 the second one and so on
}
编辑:对不起,自从我上次在java中使用正则表达式以来已经有一段时间了。 我几乎重写了我的整个帖子。对此感到抱歉,但现在应该可以了。