Java正则表达式无法正常工作 - 字符串拆分

时间:2015-12-31 11:06:28

标签: java regex string string-split

我有一个字符串变量,想要从中提取一个值。

String LB0001 = "LB0001"; 
String[] splitString = LB0001.split("LB(.*)"); 

我期待的是splitString将包含两个值["LB0001",["0001"]]。但是结果为null。为什么?我检查了正则表达式,似乎是正确的。

我想提取" 0001"。我可以用其他方式来做,但想知道我在这里做错了什么。

2 个答案:

答案 0 :(得分:2)

split方法将分割所提供的正则表达式匹配的位置。在您的情况下,表达式LB(.*)完全匹配提供的字符串,因此您什么也得不回来。

如果你想获得数字部分,你可以分割任何不是数字的东西,如:.split("\\D")。这应该会得到1个包含0001的元素。

编辑:如果您想在LB之后任何,则需要使用PatternMatcher类。所以基本上是这样的:

String str = "LB0001";
Pattern p = Pattern.compile("LB(.*?)");
Matcher m = p.matcher(str);
while(m.find())
    System.out.println(m.groups(1));

以上将使用正则表达式查找LB后面的任何文本。我已将其从.*更改为.*?,以防您有类似内容:LB001LB333。额外的?使表达式不贪婪。

答案 1 :(得分:0)

试试这个

String LB0001 = "LB0001"; 
String[] splitStringAlpha = LB0001.split("[a-zA-Z]+");
System.out.println(splitStringAlpha[0]); 
String[] splitStringNum = LB0001.split("\\D");
System.out.println(splitStringNum[0]);

这应该给你

LB
0001