Java 正規表現構文の詳細な分析と実践

WBOY
リリース: 2024-01-11 17:13:06
オリジナル
904 人が閲覧しました

Java 正規表現構文の詳細な分析と実践

Java 正規表現構文の詳細な説明と実用的なガイド

はじめに:

正規表現は強力なテキスト処理ツールであり、特定の構文を使用できます。文字列の照合、検索、置換を行うルール。 Java プログラミング言語では、Java.util.regex パッケージによって提供されるクラスを通じて正規表現を使用できます。この記事では、Java 正規表現の構文を詳しく紹介し、実用的なコード例を示します。

1. 基本構文:

1. 単一文字の一致:

- 字符类:用方括号[]表示,表示从字符列表中匹配一个字符。
    例如:[abcd]表示匹配a、b、c、d中的一个字符。
    
- 范围类:用连字符-表示,表示匹配一个范围内的字符。
    例如:[a-z]表示匹配任意小写字母。

- 反向类:用方括号内的^表示,表示匹配除了字符列表中的字符之外的任意字符。
    例如:[^a-z]表示匹配除了小写字母之外的任意字符。

- 元字符:用特殊字符表示,有一些特殊字符在正则表达式中有特殊含义。
    例如:d表示匹配一个数字字符,s表示匹配任意空白字符。
ログイン後にコピー

2. 量子の一致:

- *:匹配零次或多次。
    例如:ab*c可以匹配ac、abc、abbc等。

- +:匹配一次或多次。
    例如:ab+c可以匹配abc、abbc等,但不能匹配ac。

- ?:匹配零次或一次。
    例如:ab?c可以匹配ac、abc,但不能匹配abbc。

- {n}:匹配恰好n次。
    例如:a{3}可以匹配aaa。

- {n,}:匹配至少n次。
    例如:a{2,}可以匹配aa、aaa等。

- {n,m}:匹配至少n次,但不超过m次。
    例如:a{2,4}可以匹配aa、aaa、aaaa。
ログイン後にコピー

3. 境界の一致:

- ^:匹配输入的开始位置。
    例如:^abc可以匹配以abc开头的字符串。

- $:匹配输入的结束位置。
    例如:abc$可以匹配以abc结尾的字符串。
ログイン後にコピー

4. グループ化とキャプチャ:

- (pattern):匹配pattern,并且捕获匹配的内容。
    例如:(ab)+可以匹配ab、abab等,并且捕获ab。

- :用于引用分组中捕获的内容。
    例如:(w+)s可以匹配两个连续相同的单词。
ログイン後にコピー

2. 実践的な例:

以下では、いくつかの実践的なコード例を使用して、Java 正規表現の使用方法を示します。

1. 携帯電話番号の検証:

public class RegexExample {

public static void main(String[] args) {
    String regex = "^1[3|4|5|7|8][0-9]{9}$";
    String phone1 = "13812345678";
    String phone2 = "188123456789";
    
    System.out.println(phone1.matches(regex));  // 输出:true
    System.out.println(phone2.matches(regex));  // 输出:false
}
ログイン後にコピー

}

2. 電子メールの検証:

public class RegexExample {

public static void main(String[] args) {
    String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$";
    String email1 = "test@example.com";
    String email2 = "test@com";
    
    System.out.println(email1.matches(regex));  // 输出:true
    System.out.println(email2.matches(regex));  // 输出:false
}
ログイン後にコピー

}

3. IP アドレスの抽出:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {

public static void main(String[] args) {
    String regex = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}";
    String input = "IP地址是192.168.1.1";
    
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(input);
    
    if (matcher.find()) {
        System.out.println(matcher.group());  // 输出:192.168.1.1
    }
}
ログイン後にコピー

}

結論:

この記事では、Java 正規表現の構文について詳しく説明し、実用的なコード例を示します。正規表現の構文と使用例を理解することで、読者は正規表現を柔軟に適用してテキスト処理の問題を解決できるようになります。同時に、正規表現は複雑なパターンを処理するときにパフォーマンス上の問題を引き起こす可能性があるため、実際の使用では慎重に評価して最適化する必要があることに注意してください。この記事が Java 正規表現の理解と適用に役立つことを願っています。

以上がJava 正規表現構文の詳細な分析と実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート