1

私は文字列を持っています:"stuffhere{@ name="productViewer" vars="productId={{id}}"}morestuff"

{beginと last の間のすべてを見つけるにはどうすればよいですか}

Pattern.compile("\\{@(.*?)\\}" + from, Pattern.DOTALL); //Finds {@ name="productViewer" vars="productId={{id}

}エンディングの前後に別のエンディングがないことを確認するにはどうすればよい}ですか? 文字列は他の文字で囲まれている場合もあります。

正規表現のみが返されるようにしたい: name="productViewer" vars="productId={{id}}"

4

4 に答える 4

4

次のパターンを使用できます。

\\{@(.*)(?<!\\})\\}

(?<!..)あなたの条件をチェックする否定的な後読みです(前に がありません}

閉じ中かっこはエスケープする必要がないことに注意してください。次のように記述できます。

\\{@(.*)(?<!})}
于 2013-10-11T05:29:33.420 に答える
0

これを試して:

    String s = "stuffhere{@ name=\"productViewer\" vars=\"productId={{id}}\"}morestuff";
    Pattern p = Pattern.compile("\\{@\\s+(.*)\\}");
    Matcher m = p.matcher(s);
    if(m.find()){
        System.out.println(m.group(1));
    }
于 2013-10-11T05:50:05.520 に答える
0

これを試して:

 ^[^{]*\\{@(.*?)\\}[^}]*$
于 2013-10-11T05:35:25.523 に答える