2

1StringBuilderつの大きな文字列を作成するために使用するオブジェクトがあり、文字をStringBuilder使用してオブジェクト内の文字列を分離しています"\n"が、文字列を分割してループを実行せずに、そのオブジェクトの周りに正規表現を効率的に作成するにはどうすればよいですか?

たとえば、次の正規表現があるとします。

private static final regexPattern = "(([a-z[1-9]]+)||([1-9[a-z]]+))"

私がこれを持っている場合:

String[] myStringList = aStringList.split("\n");

regexPatternとmyStringListの各文字列を使用して、効果的な正規表現を作成しようとしています。

Pattern p = Pattern.compile(regexPattern + myStringList[i]);

stringBuilderをループに分割し、すべての文字列をチェックせずにこれを行う方法はありますか?どういうわけか、StringBuilderオブジェクト全体の周りに大きなパターンを構築できますか?

4

1 に答える 1

3

これにより、入力から大きな「OR」正規表現が作成されregexPattern、入力文字列の各部分の前に追加されます。

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)
于 2012-12-26T18:40:05.787 に答える