Java 用正则表达式拆分字符串
这里有一个字符串:Java 用正则表达式拆分字符串,java,regex,Java,Regex,这里有一个字符串:M412-Rex |-HEADSHOT-。我想在|上拆分它以获得名字,但是我的代码没有按预期工作 System.out.println("weaponPart = " + weaponPart); String[] weaponPartParts = weaponPart.split(" | "); for (String s : weaponPartParts) { System.out.println(
M412-Rex |-HEADSHOT-
。我想在|
上拆分它以获得名字,但是我的代码没有按预期工作
System.out.println("weaponPart = " + weaponPart);
String[] weaponPartParts = weaponPart.split(" | ");
for (String s : weaponPartParts) {
System.out.println("s = " + s);
}
System.out.println();
打印出:
weaponPart = M412 Rex | -HEADSHOT-
s = M412
s = Rex
s = |
s = -HEADSHOT-
我假设它与正则表达式匹配有关,但实际上是怎么回事?必须对正则表达式中的特殊字符
进行双转义:\\\\
。(意思是“或”)
换句话说,您的实际模式意味着“在找到一个或多个空间时分割”
因此,好的路线是:
String[] weaponPartParts = weaponPart.split(" \\| ");
String[] weaponPartParts = weaponPart.split(" \\| ");
作为旁白,这些特殊字符
\\\\\()[{^$*+.
是“脏打”用户\\\\\\\
而不是
改变
String[] weaponPartParts = weaponPart.split("|");
到
你需要逃离|,我的意思是
您还可以使用
模式.quote
方法转义任何特殊字符:
String[] weaponPartParts = weaponPart.split(Pattern.quote(" | "));
从:
此方法生成可用于创建模式的字符串
这将匹配字符串s,就像它是一个文本模式一样
将给出输入序列中的元字符或转义序列
没有特殊意义。
是一个特殊的正则字符。您是否尝试过“\\\\\”
?
String weaponPart = "M412 Rex | -HEADSHOT-";
System.out.println("First Name::"+weaponPart.split("\\|")[0]);
String[] weaponPartParts = weaponPart.split(Pattern.quote(" | "));