Javaの基本24〜正規表現

プログラミングが好きなあなたのように!
SpringBoot実用的なコースは学習https://edu.csdn.net/course/detail/31433
SpringCloud入門コースを学びhttps://edu.csdn.net/course/detail/31451を


序文

正規表現は強力な文字列操作ツールであり、複雑な形式の文字列照合、置換、セグメンテーション、検索などを実現できます。
正規表現は、java、Javascript、pythonなどのさまざまな言語でサポートされています。構文は普遍的です。
正規表現はさまざまな記号で構成されており、これらの記号の使い方を学ぶことがポイントです。

キャラクターマッチ

[]を使用して単一の文字に一致させ、()を使用して複数の単語に一致させます

シンボル 使用法
[abc] 角括弧内の文字を検索します
[^ abc] 角括弧内にない文字を検索します
[0-9] 0〜9の任意の番号を検索します
[az] 小文字のaからzまでの任意の文字を検索します
(赤|青|緑) 括弧内の項目を検索します

始まりと終わり

  • ^(^ a)のように、文字列の先頭に一致します。文字aで始まる文字列に一致します。
  • $は文字列の終わりに一致します。たとえば、(b $)は文字bで終わる文字列に一致します

正規表現の最初と最後に^と$を追加すると、文字列全体と効果的に一致します。

/^表达式$/

メタ文字

シンボル 使用法
改行を除く任意の1文字を検索します
\ w [A-Za-z0-9_]のいずれかの文字、数字、またはアンダースコア
\ W [^ A_Za_z0_9_]に相当する単語以外の文字を検索します
\ d [0-9]に相当する数字に一致します
\ D [^ 0-9]と同等の数字以外の文字に一致します
\ s スペース、タブ、改行などを含むすべての空白文字に一致します。[\ f \ n \ r \ t \ v]と同等
\ S [^ \ f \ n \ r \ t \ v]と同等の、空白以外の文字に一致します
\ b 単語の境界に一致します。「er \ b」などの単語とスペースの間の位置は、「never」の「er」と一致できますが、「verb」の「er」とは一致しません。
\ B 単語以外の境界に一致します。「er \ B」は「動詞」の「er」に一致できますが、「never」の「er」に一致することはできません。
\ 0 NUL文字を検索します。
\ n 改行文字に一致する
\ f フォームフィードに一致する
\ r キャリッジリターンに一致
\ t タブに一致
\ v 垂直タブに一致
\ xxx 8進数xxxで指定された文字を検索します
\ xdd 16進数ddで指定された文字を検索します
\ uxxxx xxxxで指定された16進数のUnicode文字を検索します。

数量詞

シンボル 使用法
n + 少なくとも1つのnを含む任意の文字列に一致します
n * nの0個以上の文字列に一致します
n? nの0または1つの文字列に一致します
n {x} xnを含むシーケンス文字列に一致します
n {x、y} nの少なくともx文字列と最大y文字列に一致します
n {x、} 少なくともx個の文字列に一致します
n $ nで終わる文字列に一致する
^ n nで始まる文字列に一致する
?= n 指定されたn文字列の直後に一致します
?!n 指定されたものに従わないn文字列に一致します

一般的に使用される正規表現

いくつかの一般的な正規表現の
電話番号

^1[3|4|5|7|8]\d{9}$

10進数

^(-?\d+)(\.\d+)?$

電子メールアドレス

[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}

HTMLタグ

/<(.*)>.*<\/\1>|<(.*) \/>/

漢字

[\u4e00-\u9fa5]

QQ番号

(\d+)\.(\d+)\.(\d+)\.(\d+)

IP

(\d+)\.(\d+)\.(\d+)\.(\d+)

正規表現を使用する

Javaは、正規表現マッチングAPIを実装しています。

  • パターン表現パターン
  • マッチャー

パターンクラス

作成方法

Pattern.compile(regEx)
忽略大小写
Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);

マッチャークラス

作成方法

pattern对象.matcher(字符串)

一般的な方法

  • ブール値matches()完全な文字列に一致するかどうか

メール確認ケース

public static void main(String[] args) {
    // 要验证的字符串
    String str = "[email protected]";
    // 邮箱验证规则
    String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";
    // 编译正则表达式
    Pattern pattern = Pattern.compile(regEx);
    Matcher matcher = pattern.matcher(str);
    // 字符串是否与正则表达式相匹配
    boolean rs = matcher.matches();
    System.out.println(rs);
}

一般的な方法

  • boolean find()が文字列内の定義されたコンテンツを検索できるかどうか
  • String group(String name)は、検索された文字列の内容を返します

複数のimgタグでsrcのコンテンツを検索します

String str = "<img src=\"http://www.xx.com/1.jpg\"><img src=\"http://www.xx.com/2.jpg\">";
Pattern pattern = Pattern.compile("<img src=\"(?<url>.+?)\">");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
    System.out.println(matcher.group("url"));
}

ストリング

Stringクラスの一部のメソッドは、次の
ような正規表現も使用します

  • 文字列replaceAll(文字列正規表現、文字列置換)
  • ブール値の一致(文字列正規表現)
  • String [] split(String regex)

数字を*に置き換えます

String str = "123456Java";
String str2 = str.replaceAll("\\d", "*");

電話番号を一致させる

String tel = "1567667443";
boolean matches = tel.matches("^1[3|4|5|7|8]\\d{9}$");

分割文字

String words = "中国.湖北.武汉";
String[] strings = words.split("\\.");

終わり


他のJavaの知識を学ぶ必要がある場合は、ここでJavaの概要に関する非常に詳細な知識を調べてください。

おすすめ

転載: blog.csdn.net/u013343114/article/details/112977579