Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StringBuilder和正则表达式解析_Java_Regex_Stringbuilder - Fatal编程技术网

Java StringBuilder和正则表达式解析

Java StringBuilder和正则表达式解析,java,regex,stringbuilder,Java,Regex,Stringbuilder,我有一个StringBuilder对象,用于构建一个大字符串,使用“\n”字符分隔StringBuilder对象中的字符串,如何在不拆分字符串和执行循环的情况下高效地围绕该对象构建正则表达式 例如,假设我有以下正则表达式: private static final regexPattern = "(([a-z[1-9]]+)||([1-9[a-z]]+))" 如果我有这个: String[] myStringList = aStringList.split("\n"); 我正在尝试使用reg

我有一个
StringBuilder
对象,用于构建一个大字符串,使用
“\n”
字符分隔
StringBuilder
对象中的字符串,如何在不拆分字符串和执行循环的情况下高效地围绕该对象构建正则表达式

例如,假设我有以下正则表达式:

private static final regexPattern = "(([a-z[1-9]]+)||([1-9[a-z]]+))"
如果我有这个:

String[] myStringList = aStringList.split("\n");
我正在尝试使用regexpatern和myStringList中的每个字符串构建一个有效的正则表达式

Pattern p = Pattern.compile(regexPattern + myStringList[i]);
在不将我的stringBuilder拆分为一个循环并检查每个字符串的情况下,是否可以执行此操作?我可以围绕整个StringBuilder对象构建一个大的模式吗?

这将从输入中构建一个大的“或”正则表达式,预挂起
regexpatern
到输入字符串的每个部分:

String bigRegex = "(" + regexPattern + aStringList.replace("\n", ")|(" + regexPattern) + ")";
下面的一些代码显示了您得到的结果:

public static void main(String[] args) {
    String aStringList = "foo\nbar\nbaz";
    String bigRegex = "(" + regexPattern + aStringList.replace("\n", ")|(" + regexPattern) + ")";
    System.out.println(bigRegex);
    // Pattern p = Pattern.compile(bigRegex);
}
输出:

((([a-z[1-9]]+)||([1-9[a-z]]+))foo)|((([a-z[1-9]]+)||([1-9[a-z]]+))bar)|((([a-z[1-9]]+)||([1-9[a-z]]+))baz)

如果我试图在正则表达式中使用“\n”分隔符,那么使用它是否是构建字符串的有效方法?不是特别有效,但如果您从文件中获得输入,则会很方便-编辑和维护该文件将很容易将每个正则表达式部分保留在单独的行上。我想你在这里找到了一个好主意。