我有一个字符串变量,想要从中提取一个值。
String LB0001 = "LB0001";
String[] splitString = LB0001.split("LB(.*)");
我期待的是splitString
将包含两个值["LB0001",["0001"]]
。但是结果为null。为什么?我检查了正则表达式,似乎是正确的。
我想提取" 0001"。我可以用其他方式来做,但想知道我在这里做错了什么。
答案 0 :(得分:2)
split
方法将分割所提供的正则表达式匹配的位置。在您的情况下,表达式LB(.*)
完全匹配提供的字符串,因此您什么也得不回来。
如果你想获得数字部分,你可以分割任何不是数字的东西,如:.split("\\D")
。这应该会得到1个包含0001
的元素。
编辑:如果您想在LB
之后任何,则需要使用Pattern
和Matcher
类。所以基本上是这样的:
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