java.util.regexパケットは、主に以下の3つのカテゴリが含まれています。
パターンの種類:
オブジェクトのパターンは、正規表現コンパイラ表現です。パターンなしのパブリッククラスのコンストラクタ。Patternオブジェクトを作成するには、まずPatternオブジェクトを返し、そのパブリック静的コンパイルメソッドを呼び出す必要があります。この方法は、その最初のパラメータとして正規表現を受け入れます。
マッチャーカテゴリ:
マッチャーオブジェクトは、入力文字列照合動作を説明し、エンジンされています。Patternクラスと同じように、何のpublicコンストラクタをマッチャません。あなたはマッチャーオブジェクトを取得するために、整合方法パターンオブジェクトを呼び出す必要があります。
PatternSyntaxExceptionの:
PatternSyntaxExceptionのは、正規表現パターンの構文エラーを表し、非必須例外クラスです。
次の例では、正規表現は、* runoob *文字列はサブストリングrunoobが含まれているかどうかを見つけるために使用:
cc.bcyパッケージ; インポートのjava.util.regex。 * ; パブリック クラスRegexExample { 公共 静的 ボイドメイン(文字列[]引数) { 文字列の内容 = " runoob.comからI AMのnoobの" ; 文字列パターン = " * runoob。 * " ; ブールIsMatch = Pattern.matches(パターン、コンテンツ); 。システムOUTの .println(" 文字列はサブストリング'runoob'が含まれている?" + IsMatch); } } / * 文字列は、サブストリング「runoob」が含まれていますか?trueに * /
グループをキャプチャ:
グループは、括弧内の文字をグループ化することによって作成されるユニットを処理する単一のメソッドである場合に複数の文字を取り込みます。groupCount法で表示することができますどのように多くのパケットマッチャーオブジェクト式を呼び出します。groupCount方法は、複数のオブジェクト現在整合捕捉基を表すint値を返します。
特別なグループ(グループ(0))もあり、それは常に式全体を表しています。グループは、戻り値groupCountには含まれていません。
パッケージcc.bcy。 輸入のjava.util.regex *。; パブリッククラスRegexExample { 公共の静的な無効メイン(文字列[] args) { 文字列のラインは=「この順序は、QT3000のために置かれたOK!?」。 文字列パターン= "(\\ D *)(\\ D +)(*。)"; //创建パターン对象 パターンp = Pattern.compile(パターン)。 //创建マッチャ对象 マッチャM = p.matcher(ライン) IF(m.find()) { するSystem.out.println( "実測値:" + m.group(0))。 System.out.println( "発見値:" + m.group(1)); System.out.println( "発見値:" + m.group(2))。 System.out.println( "実測値: System.out.println( "いいえマッチ!"); } のInt = N-m.groupCount(); System.out.printlnは(+ N + "キャプチャグループ" "があります"); } } / * 実測値:この!?QT3000のためにOK発注WAS 見つかり値を:これはQTのために発注WAS 実測値:3000 ?見つかった値:! OK 3つのキャプチャグループがあります * /
Javaの正規表現の構文:
他の言語では、\\言った:私はそれを特別な意味を与えていない、正の正規表現のバックスラッシュ(文字通り)を挿入します。
Javaでは、\\言った:以下の文字は特別な意味を持っているので、私は、バックスラッシュに正規表現を挿入します。
だから、他の言語(Perlなど)で、バックスラッシュは\役割を逃れたのに十分であり、2つのバックスラッシュでJavaの正規表現であなたが他の言語に回すために解決するために持っている必要があります正義の行動。また、単に1つの通常のバックスラッシュを表し、正規表現のデジタル表現は\\ dとする理由である、\正規表現でJava、その他の言語の1の2 \\代わっを理解することができますはい。
Matcherクラスメソッド:
以下は、単語の出現回数「猫」の入力文字列の出現回数の例です。
パッケージcc.bcy。 輸入のjava.util.regex *。; パブリッククラスRegexExample { プライベート静的最終列REGEX = "\\ BCAT \\ B"。 プライベート静的最終列入力=「猫猫猫cattie猫」。 パブリック静的無効メイン(文字列[] args) { パターンP = Pattern.compile(REGEX)。 整合M = p.matcher(INPUT)。 int型のカウント= 0; 一方、(m.find()) { ++数えます。 System.out.println(「マッチ番号」+カウント数)。 System.out.println( "開始()" + m.start()); System.out.println( "終了()" + m.end())。 System.out.println(); / * 一致数1 開始()0 端()3 マッチング番号2 開始()4 端()7 試合数3 開始()8 の端部()11 試合数4 スタート()19 の端部()22 * /
lookingAt一致および方法は、入力シーケンスのパターンと一致することを試みるために使用されます。彼らは別の試合は、シーケンス全体の要件に合致しているが、lookingAtを必要とされていません。この方法は、lookingAt文の試合が、一致する最初の文字から開始する必要性を必要としませんが。
文字列はすべて置き換えられマッチ「 - 」appendReplacement :(()メソッド)で
package cc.bcy; import java.util.regex.*; public class RegexExample { private static final String REGEX="a*b"; private static final String INPUT="aabfooaabfooabfoobkkk"; public static void main(String[] args) { Pattern p=Pattern.compile(REGEX); Matcher m=p.matcher(INPUT); StringBuffer sb=new StringBuffer(); while(m.find()) { m.appendReplacement(sb, "-"); } m.appendTail(sb); System.out.println(sb.toString()); } } /* -foo-foo-foo-kkk */
replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配。
package cc.bcy; import java.util.regex.*; public class RegexExample { private static final String REGEX="dog"; private static final String INPUT="The dog says meow. All dogs say meow."; public static void main(String[] args) { Pattern p=Pattern.compile(REGEX); Matcher m=p.matcher(INPUT); String str=m.replaceAll("cat"); System.out.println(str); } } /* The cat says meow. All cats say meow. */
PatternSyntaxException 类的方法:
PatternSyntaxException 是一个非强制异常类,它指示一个正则表达式模式中的语法错误。 PatternSyntaxException 类提供了下面的方法来帮助我们查看发生了什么错误。