Java 正则表达式不工作 - 字符串拆分
Java regex not working - string split
我有一个字符串变量,想从中提取一个值。
String LB0001 = "LB0001";
String[] splitString = LB0001.split("LB(.*)");
我所期望的是 splitString
将包含两个值 ["LB0001",["0001"]]
。然而结果为空。为什么?我检查了正则表达式,似乎是正确的。
我想提取“0001”。我可以用其他方式做到这一点,但想知道我在这里做错了什么。
split
方法将拆分正则表达式提供的匹配项。在您的情况下,表达式 LB(.*)
完全匹配提供的字符串,因此您什么也得不到。
如果你想得到数字部分,你可以拆分任何不是数字的东西,像这样:.split("\D")
。这应该为您提供 1 个包含 0001
.
的元素
编辑:如果你想在 LB
之后使用 任何东西,你需要使用 Pattern
和 Matcher
class。所以基本上是这样的:
String str = "LB0001";
Pattern p = Pattern.compile("LB(.*?)");
Matcher m = p.matcher(str);
while(m.find())
System.out.println(m.groups(1));
以上将使用正则表达式来查找 LB
之后的任何文本。我已将它从 .*
更改为 .*?
,以防您遇到类似这样的情况:LB001LB333
。额外的 ?
使表达式不贪婪。
试试这个
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
我有一个字符串变量,想从中提取一个值。
String LB0001 = "LB0001";
String[] splitString = LB0001.split("LB(.*)");
我所期望的是 splitString
将包含两个值 ["LB0001",["0001"]]
。然而结果为空。为什么?我检查了正则表达式,似乎是正确的。
我想提取“0001”。我可以用其他方式做到这一点,但想知道我在这里做错了什么。
split
方法将拆分正则表达式提供的匹配项。在您的情况下,表达式 LB(.*)
完全匹配提供的字符串,因此您什么也得不到。
如果你想得到数字部分,你可以拆分任何不是数字的东西,像这样:.split("\D")
。这应该为您提供 1 个包含 0001
.
编辑:如果你想在 LB
之后使用 任何东西,你需要使用 Pattern
和 Matcher
class。所以基本上是这样的:
String str = "LB0001";
Pattern p = Pattern.compile("LB(.*?)");
Matcher m = p.matcher(str);
while(m.find())
System.out.println(m.groups(1));
以上将使用正则表达式来查找 LB
之后的任何文本。我已将它从 .*
更改为 .*?
,以防您遇到类似这样的情况:LB001LB333
。额外的 ?
使表达式不贪婪。
试试这个
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