使用正则表达式拆分字符串

时间:2012-09-11 09:56:43

标签: java regex

我一直试图在android中使用正则表达式拆分字符串而没有任何成功。

字符串的格式如下 id; value | 例如:

String valueString = "20;somevalue|4;anothervalue|10;athirdvalue|5;enoughwithvaluesalready";

我使用此方法尝试分割字符串。

public void splitString(String valueString){
    Pattern p = Pattern.compile("([\\d]+);([^\\|]+)");
    Matcher m = p.matcher(valueString);  
    boolean matches = m.matches();
}

当我在Rubular-regex-editor中运行它看起来很好,在Android中找不到匹配项。有任何想法吗?

3 个答案:

答案 0 :(得分:2)

方法matches()尝试将正则表达式与完整字符串进行匹配。这显然不匹配。

find()将找到下一个匹配的子字符串。

答案 1 :(得分:2)

为什么不使用String.split而不是编写自己的解决方案?

像:

final String[] entries = valueString.split("\\|");
for (String entry : entries) {
  final String[] fields = entry.split(";", 2);
}

答案 2 :(得分:0)

我已经尝试了你的例子,它只会在Regx

的末尾添加。*
    Log.i("MainActivity ", "Matches " + valueString.matches("([\\d]+);([^\\|]+).*"));

以上行返回true

http://developer.android.com/reference/java/lang/String.html#matches(java.lang.String

在上述功能中描述