我正在尝试将一个字符串拆分为多个字符串,而不是只使用一个简单的正则表达式模式,我正在尝试使用一个正则表达式模式,如果它检测到某些字符,它将把一个字符串拆分为不同的字符串,但是字符是不同的。它不是将字符串拆分为不同的字符串,而是为我提供所述字符串中的每个字符。
String[] splitstr = line.split("([&]{2})?([|]{2})?(!=)?");
使用上面的行,我有一个名为 line
的变量,例如,我将此行从文件中放入:
:if[input=right || input=Right]:
我只是想知道是否有办法把它拆分成
":if[input=right", "input=Right]:"
如果我输入这样一行:
:if[input=right || input=Right && input != null]:
所以它 split 成
":if[input=right", "input=Right", "input != null]:"
我使用 String#split(regex)
作为 ||
符号,它工作得很好,但现在我希望它在 的任何地方拆分>||
或 &&
或 !=
我希望我的代码高效、干净且易于阅读。
最佳答案
下面的 java 类会将您的示例字符串拆分为您感兴趣的部分。代码会将原始字符串拆分为 '||'和 '&&' 分隔符,全局。即,如果您有多个 '||'或原始字符串中的 '&&' 运算符,每个部分都将被拆分。
需要注意的是需要对特殊字符进行转义(\)。在 Java 中,您还需要进行转义,因此您需要 2 个反斜杠才能在字符串中包含文字。
这是一个测试正则表达式代码的好网站... 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]:
关于java - 使用具有不同捕获组的正则表达式将字符串拆分为多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981766/