JAVA共通API - 正規表現

ヒント: 記事を作成した後、目次を自動的に生成できます。生成方法は、右側のヘルプドキュメントを参照してください。

記事ディレクトリ

目次

記事ディレクトリ

序文

まず、正規表現とは何でしょうか?

2 番目、正規表現記号

一般的に使用される 3 つの正規表現の組み合わせ

4 番目に、正規表現の効率性 

5、正規表現の書き方を学ぶ

単一の文字に一致します 

複数の文字の一致編集

6、正規表現プラグインを生成する

序文

皆さんこんにちは。私は動物のミルクが一番大好きです。今日は正規表現を紹介します。私の足跡をたどって見てください。


まず、正規表現とは何でしょうか?

正規表現は、テキストの照合と処理に使用されるツールであり、特定の記号と構文を使用して文字列のクラスのパターンを記述することができます。コンピュータ サイエンスやさまざまなプログラミング言語では、正規表現はテキストの検索、置換、フィルタリング、検証などに広く使用されています。正規表現を使用すると、電子メール アドレス、電話番号、URL などの一致など、特定のパターンに一致するテキストを簡単に一致させることができます。さまざまなテキスト処理機能を実現するため。正規表現は、Java、Python、JavaScript、Perl などを含むさまざまなプログラミング言語で使用でき、コンピュータ プログラミング、テキスト編集、データ処理などで広く使用されており、強力な言語です。柔軟なツール。


 2 番目、正規表現記号

1. メタキャラクター
メタキャラクターは、正規表現で特別な意味を持つ文字であり、特定の文字または文字セットと一致させるために使用されます。一般的なメタ文字には次のものがあります。 .: は改行を除く任意の文字に一致します。
^: 文字列の先頭と一致します。
$: 文字列の末尾と一致します。
*: 前の文字と 0 回以上一致します。
+: 前の文字と 1 回以上一致します。
?: 前の文字と 0 回または 1 回一致します。{n}: 直前の文字と正確に n 回一致します。
{n,}: 前の文字と少なくとも n 回一致します。
{n,m}: 前の文字と少なくとも n 回、m 回以下一致します。
[]:文字セット内の任意の文字と一致します。
|: OR 関係を示し、2 つ以上の式のいずれか 1 つと一致します。
(): グループ化に使用され、複数の要素を 1 つの全体に結合します。
\: メタ文字をエスケープして、メタ文字の特別な意味を失わせるために使用されます。
2. エスケープ文字
エスケープ文字は、メタキャラクタを通常の文字に変換したり、通常の文字をメタキャラクタに変換したりするために使用されます。一般的なエスケープ文字には次のものがあります。\d: 数字と一致します。
\D: 数字以外の文字と一致します。
\w: 文字、数字、またはアンダースコア文字と一致します。
\W: 文字、数字、アンダースコア以外の文字と一致します。
\s: スペース、タブ、または改行と一致します。
\S: スペース、タブ、改行以外の文字と一致します。
\b: 単語の境界に一致します。
\B: 単語以外の境界に一致します。
Java で正規表現を使用する場合は、次の点に注意してください。



\\: バックスラッシュ文字そのものと一致します。
バックスラッシュ文字 \ は \\ としてエスケープする必要があります。エスケープしないとコンパイル エラーが発生します。
たとえば、数字と一致させるには \d を使用できますが、Java では \\d と記述する必要があります。

一般的に使用される 3 つの正規表現の組み合わせ

以下が一般的に使用されます

  1. 一致する電子メール アドレス:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  1. 携帯電話番号を一致させる:
^1[3-9]\d{9}$
  1. 一致ID番号(18桁):
^\d{17}[\dXx]$
  1. 一致する URL:
^(http|https)://[a-zA-Z0-9./?%&=+-_]+$ 
  1. 一致日 (yyyy-mm-dd):
^\d{4}-\d{2}-\d{2}$
  1. 一致する IP アドレス:
^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$
  1. ユーザー名と一致します (文字で始まり、英数字のアンダースコアを使用でき、長さは 6 ~ 16 桁です):
^[a-zA-Z][a-zA-Z0-9_]{5,15}$

以下は基本的にすべてをカバーします

  1. 携帯電話番号を一致させる:
^1[3-9]\d{9}$
  1. 一致する ID 番号 (15 桁または 18 桁):
^\d{15}(\d{2}[0-9xX])?$
  1. 一致する社会信用コード (18 桁):
^[0-9A-Z]{18}$
  1. 一致する URL:
^(http|https)://[a-zA-Z0-9./?%&=+-_]+$ 
  1. 一致日 (yyyy-mm-dd):
^\d{4}-\d{2}-\d{2}$
  1. 一致する IP アドレス:
^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$
  1. ユーザー名と一致します (文字で始まり、英数字のアンダースコアを使用でき、長さは 6 ~ 16 桁です):
^[a-zA-Z][a-zA-Z0-9_]{5,15}$
  1. 一致するパスワード (長さは 8 ~ 16 文字、文字と数字を含める必要があります):
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,16}$
  1. 中国語の文字と一致する:
^[\u4e00-\u9fa5]{0,}$
  1. 郵便番号と一致する:
^[1-9]\d{5}$
  1. 一致する MAC アドレス:
^([0-9a-fA-F]{2}-){5}[0-9a-fA-F]{2}$
  1. 一致する QQ 番号:
^[1-9][0-9]{4,10}$
  1. WeChat コードと一致します (文字、数字、アンダースコア、ダッシュが使用でき、長さは 6 ~ 20 桁です)。
^[a-zA-Z0-9_-]{6,20}$
  1. 一致する整数:
^-?\d+$
  1. フロートの一致:
^-?\d+\.\d+$
  1. 負でない整数と一致します:
^\d+$
  1. 負でない浮動小数点数と一致します。
^\d+\.\d+$
  1. 正の整数と一致する:
^[1-9]\d*$
  1. 正の浮動小数点数と一致します。
^[1-9]\d*\.\d+|0\.\d*[1-9]\d*$
  1. 正でない整数と一致します:
^-[1-9]\d*|0$
  1. 非正の浮動小数点数と一致します。
^(-([1-9]\d*\.\d+|0\.\d*[1-9]\d*))|0\.{0,1}$

 


 4 番目に、正規表現の効率性 

qq 番号が正しいかどうかを確認する必要がある場合。

規則: 1. 6桁と20桁以内

           2. 先頭に0を置くことはできません

           3. すべて数字でなければなりません。

まず、これまでに学んだ知識を使用して検証要件を満たし、次に正規表現検証を体験します。

 

めんどくさいですか?めんどくさいと思うか思わないかは関係なく、とにかくめんどくさいと思います

なぜかというと、私は正規表現を知っているからです。

ショーに来てください


 5、正規表現の書き方を学ぶ

次に、正規表現の書き方を少し教えます。書きたくない方は、プラグインまで飛ばしてください。もちろん、すべての人に理解しておくことをお勧めします。結局のところ、害はありませんね?それでは、さあ!

序文:

matches文字列が正規表現の形式に従っているかどうかを判定するJavaのメソッドです。その使用法は次のとおりです。

String regex = "正则表达式";
String str = "待匹配字符串";
boolean isMatch = str.matches(regex);

単一の文字に一致します 

        /*
        * 匹配单个字符
        * */

        // 只能是 a b c 中的一个
        System.out.println("a".matches("[abc]"));// true
        System.out.println("?".matches("[abc]"));// false

        // 不能出现 a b c 中的一个
        System.out.println("a".matches("[^abc]"));// true
        System.out.println("?".matches("[^abc]"));// false

        // a到z和A到Z(包括头尾的范围)
        System.out.println("z".matches("[a-zA-z]")); // true
        System.out.println("aa".matches("[a-zA-z]"));//false
        System.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //true

        // [a-z&&[def]] a-z和def的交集。为:d,e,f
        System.out.println("d".matches("[a-z&&[def]]")); //true
        System.out.println("0".matches("[a-z&&[def]]")); //false
        
        /*
         \表示转义字符
         两个\的理解方式:前面的\是一个转义字符,改变了后面\原本的含义,
         把他变成一个普普通通的\而已。
        */

        //  .  表示任意一个字符
        System.out.println("你".matches("..")); //false
        System.out.println("你".matches(".")); //true
        System.out.println("你我".matches(".."));//true

        // \\d 表示任意的一个数字
        // 简单来记:两个\表示一个\
        System.out.println("a".matches("\\d")); // false
        System.out.println("3".matches("\\d")); // true

        // \\w 只能是一位单词字符[a-zA-Z_0-9]
        System.out.println("z".matches("\\w")); // true
        System.out.println("2".matches("\\w")); // true
        System.out.println("你".matches("\\w"));//false

        // 非单词字符 \\W
        System.out.println("你".matches("\\W")); // true

複数の文字に一致する  

6、正規表現プラグインを生成する

 効果を見てください

 

 

上記の正規表現の書き方は誰にとっても非常に浅いものですが、理解できれば、ほとんどの正規表現は直接検索できます。

直接使用することもできますが、理解しておくと役立ちます。

要約する

問題を解決するには、正規表現を理解し、使用できるようになることだけが必要です。正規表現を理解し、簡単な正規表現を作成できることが最善です。次に正規表現を見たときは、おそらくクロールについて説明するでしょう。それを楽しみに待つ!

 

おすすめ

転載: blog.csdn.net/weixin_73869209/article/details/130794971