この記事では、括弧内のコンテンツを定期的に抽出するJavaの操作について説明します。次のように、参照のために共有してください。
私はかつて私の仕事で問題に遭遇しました。それは、各ブラケットのコンテンツを文字列内のコンテンツを抽出する必要があることでした。私はオンラインで検索し、正規表現を使用して括弧内のコンテンツを抽出できることを発見しました。特定の実装は次のとおりです。
java.util.arraylist;インポートJava.util.list; Import Java.util.regex.matcher; Import java.util.regex.pattern; public static void main(string [] args){string msg = "performancemanager [1st bracket] product [2nd bracket]ブラケット] 79〜 ";リスト<文字列>リスト= ExtractMessageBy Regular(MSG); for(int i = 0; i <list.size(); i ++){system.out.println(i+" - >"+list.get(i)); }} / ** *正規式を使用して、コンテンツをブラケットに抽出します * @param msg * @return * / public static list <string> extractmessageby(string msg){list <string> list = new arraylist <string>();パターンP = pattern.compile( "(// [[^//]]*//])"); Matcher M = P.Matcher(MSG); while(m.find()){list.add(m.group()。substring(1、m.group()。length() - 1)); }返品リスト。 }}出力の結果は次のとおりです。
0->最初のブラケット
1-> 2番目のブラケット
2-> 3番目のブラケット
これにより、コード作業がすぐに完了しましたが、後でブラケットに括弧がまだ括弧が含まれている場合、正規表現がその効果を失うことがわかりました。私はそれを自分で解決する方法を見つけなければなりませんでした。調査の後、私はついに解決策を見つけました。特定の実装は次のとおりです。
パッケージcom.perry.test; import java.util.arraylist; import java.util.list; import java.util.regex.matcher; Import java.util.regex.pattern; public class extractmessage {public static void main(string [] args){sring msg = "Performancemanagerブラケットにはブラケットが含まれています]] <[3番目のブラケット] 79〜 ";リスト<文字列>リスト= extractmessage(msg); for(int i = 0; i <list.size(); i ++){system.out.println(i+" - >"+list.get(i)); }} / ** *括弧内のコンテンツを抽出し、ブラケットのブラケットを無視します * @param msg * @return * / public static list <string> extractmessage(string msg){list <string> list = new arraylist <string>(); int start = 0; int startflag = 0; int endflag = 0; for(int i = 0; i <msg.length(); i ++){if(msg.charat(i)== '['){startflag ++; if(startflag == endflag + 1){start = i; }} else if(msg.charat(i)== ']'){endflag ++; if(endflag == startflag){list.add(msg.substring(start + 1、i)); }}} return list; }}出力の結果は次のとおりです。
0->最初のブラケット
1-> 2番目のブラケット[ブラケットにはブラケットが含まれています]
2-> 3番目のブラケット
主なアイデアは、文字列を通過し、ブラケットの開始位置と終了位置をマークすることです。ブラケットの開始位置に対応するエンド位置である場合、開始位置とエンド位置のカウントは同じであるため、完全なブラケットの内容が傍受されます。
PS:参照用の2つの非常に便利な正規表現ツールを次に示します。
JavaScript正規表現オンラインテストツール:
http://tools.vevb.com/regex/javascript
正規表現オンライン生成ツール:
http://tools.vevb.com/regex/create_reg
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaの正規表現スキル」、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードスキル」、「Javaファイルおよびディレクトリ操作スキルの概要」、および「Java Cache操作スキルの概要」、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作スキルの概要」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。