我试图将一个字符串拆分成多个字符串,而不是只使用一个简单的正则表达式模式字符串,我试图使用一个正则表达式模式,如果它检测到某些字符,将字符串拆分成不同的字符串,但字符是不同的。它没有将字符串拆分成不同的字符串,而是给了我所说的字符串中的每个字符。
String[] splitstr = line.split("([&]{2})?([|]{2})?(!=)?");
使用上面这一行,我有一个名为line
的变量,作为一个例子,我从文件中放入这一行:
:if[input=right || input=Right]:
我只是想知道是否有办法将其拆分为
":if[input=right", "input=Right]:"
如果我这样写一行:
:if[input=right || input=Right && input != null]:
这样就分成了
":if[input=right", "input=Right", "input != null]:"
我正在使用String#split(regex)
作为||
符号,它运行得很好,但现在我希望它分割为||
或&&
或{{ 1}}我希望我的代码高效,干净,易于阅读。
答案 0 :(得分:2)
下面的java类会将您的示例字符串拆分为您感兴趣的部分。代码将原始字符串拆分为“||”和'&&'全球范围内的分层即,如果你有多个'||'或'&&'在原始字符串中的运算符,每个部分都将被拆分。
需要注意的一点是需要转义(\)特殊字符。在Java中,您还需要转义转义,因此您需要2个反斜杠才能在字符串中包含文字。
这是一个测试regEx代码的好网站... Regular Expressions 101
public class splitStrRegex {
public static void main(String[] args) {
String myStr = ":if[input=right || input=Right && input != null]:";
String[] myStrings = myStr.split("\\|\\||&&");
for(int i = 0; i < myStrings.length; i++) {
System.out.println(myStrings[i].trim());
}
}
}
<强>输出:强>
:if[input=right
input=Right
input != null]:
答案 1 :(得分:0)
这是一个非常有趣的问题。网站上有更多答案,例如:Java String.split() Regex 此外,它很容易检查,如:
public class Reg {
public static void main(String args[]) {
String string = "00!=4-0||34 & 55!=6";
String[] parts = string.split("[&||!=]");
for (int i = 0; i < parts.length; i++) {
System.out.println("Part: " + parts[i]);
}
}
}
<强>输出:强>
Part: 00
Part:
Part: 4-0
Part:
Part: 34
Part: 55
Part:
Part: 6
但问题是&#34;&amp;&amp;&#34;,例如,对于:
String string = "00!=4-0||34 && 55!=6";
String[] parts = string.split("[&&||!=]");
<强>输出:强>
Part: 00
Part:
Part: 4-0
Part:
Part: 34 && 55
Part:
Part: 6
我猜我们需要了解&amp;&amp;在其他解释中,例如:
public class Reg {
public static void main(String args[]) {
String string = "00!=4-0||34 && 55!=6";
String[] parts = string.split("[&^&||!=]");
for (int i = 0; i < parts.length; i++) {
System.out.println("Part: " + parts[i]);
}
}
}
<强>输出:强>
Part: 00
Part:
Part: 4-0
Part:
Part: 34
Part:
Part: 55
Part:
Part: 6