プログラミングが好きなあなたのように!
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の概要に関する非常に詳細な知識を調べてください。