• 技术文章 >Java >java教程

    详细介绍Java正则表达式之单字符匹配和预定义字符

    WBOYWBOY2022-11-23 20:42:27转载94
    本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于单字符匹配和预定义字符的相关内容,下面一起来看一下,希望对大家有帮助。

    php入门到就业线上直播课:进入学习

    推荐学习:《java视频教程

    一、需求

    现有一个字符串,需满足如下要求:

    如果字符串满足上述要求,返回 true,否则返回 false

       public static boolean validString(String s) {
           return s.matches("[a-zA-Z][a-zA-Z0-9_]{5,17}");
       }

    正则表达式用极简的规则取代了复杂的验证逻辑

    Regex Expression

    正则表达式是一种通用的技术,适用于多种编程语言

    二、单字符匹配(6个)

    1. [abc]:字符串的某个位置(某一个字符)满足 a、b、c 中的一个

    某个位置:该【单字符匹配】放的位置

    public class TestDemo {
        public static void main(String[] args) {
            String regex = "[zgq]";
            System.out.println("z".matches(regex)); // true
            System.out.println("g".matches(regex)); // true
            System.out.println("q".matches(regex)); // true
            System.out.println("zgq".matches(regex)); // false
        }}
    public class TestDemo {
        public static void main(String[] args) {
            String regex = "26[abc]3q";
            System.out.println("26a3q".matches(regex)); // true
            System.out.println("26abc".matches(regex)); // false
            System.out.println("26b3q".matches(regex)); // true 
        }}

    2. [^abc]:除了 a、b、c 之外的任意单个字符

    public class TestDemo {
        public static void main(String[] args) {
            String regex = "[^cat]666";
            System.out.println("c666".matches(regex)); // false
            System.out.println("a666".matches(regex)); // false
            System.out.println("t666".matches(regex)); // false
            System.out.println("bb666".matches(regex)); // false
            System.out.println("b666".matches(regex)); // true
        }}
    public class TestDemo {
        public static void main(String[] args) {
            String regex1 = "[12345]666";
            String regex2 = "[^1-5]666";
            System.out.println("1666".matches(regex1)); // true
            System.out.println("3666".matches(regex1)); // true
            System.out.println("5666".matches(regex1)); // true
            System.out.println("6666".matches(regex1)); // false
    
            System.out.println("1666".matches(regex2)); // false
            System.out.println("3666".matches(regex2)); // false
            System.out.println("5666".matches(regex2)); // false
    
            System.out.println("6666".matches(regex2)); // true
        }}

    3. [a-zA-z]:匹配单个英文字母

    public class TestDemo {
        public static void main(String[] args) {
            String regex = "[a-zA-Z]666";
            System.out.println("6666".matches(regex)); // false
            System.out.println("b666".matches(regex)); // true
        }}

    4. [a-d[1-6]]:和 [a-d1-6] 一样(并集)

    public class TestDemo {
        public static void main(String[] args) {
            String regex1 = "[a-d[1-6]]";
            String regex2 = "[a-d1-6]";
            System.out.println("a".matches(regex1)); // true
            System.out.println("e".matches(regex1)); // false
            System.out.println("1".matches(regex1)); // true
            System.out.println("7".matches(regex1)); // false
    
            System.out.println("a".matches(regex2)); // true
            System.out.println("e".matches(regex2)); // false
            System.out.println("1".matches(regex2)); // true
            System.out.println("7".matches(regex2)); // false
        }}

    5. [zgq&&[god]]:交集

    public class TestDemo {
        public static void main(String[] args) {
            String regex1 = "[zgq&&[god]]";
            System.out.println("q".matches(regex1)); // false
            System.out.println("d".matches(regex1)); // false
            System.out.println("g".matches(regex1)); // true
        }}

    6. [zgq&&[god]]:取差集

    public class TestDemo {
        public static void main(String[] args) {
            String regex1 = "[zgq&&[^god]]";
            System.out.println("q".matches(regex1)); // true
            System.out.println("d".matches(regex1)); // false
            System.out.println("g".matches(regex1)); // false
            System.out.println("z".matches(regex1)); // true
    
            // 取差集, 从字母 a 到字母 z 中去除字母 b 和 d
            String regex2 = "[a-z&&[^bd]]";
            System.out.println("d".matches(regex2)); // false
            System.out.println("a".matches(regex2)); // true
        }}

    三、预定义字符(7个)

    预定义字符匹配的仍然是单个字符

    .】:任意单个字符
    \d】:数字
    \D】:非数字
    \s】:空白
    \S】:非空白
    \w】:字母(英文字母、下划线、数字)
    \W】:非英文字母

    Java 中需以两个【\】开头表示预定义字符

    public class TestDemo {
        public static void main(String[] args) {
            String r1 = ".";
            System.out.println("@".matches(r1)); // true
            System.out.println("庆".matches(r1)); // true
            System.out.println("I".matches(r1)); // true
            System.out.println(" ".matches(r1)); // true
            System.out.println(".".matches(r1)); // true
        }}
    public class TestDemo {
        public static void main(String[] args) {
            // 匹配 java 文件
            String r1 = ".\\.java";
            System.out.println("a.java".matches(r1)); // true
            System.out.println("xjava".matches(r1)); // false
            System.out.println("5java".matches(r1)); // false
        }}
    public class TestDemo {
        public static void main(String[] args) {
            String r1 = "[abc]";
            String r2 = "\\[abc\\]";
            System.out.println("a".matches(r1)); // true
            System.out.println("c".matches(r1)); // true
            System.out.println("[abc]".matches(r1)); // false
    
            System.out.println("a".matches(r2)); // false
            System.out.println("c".matches(r2)); // false
            System.out.println("[abc]".matches(r2)); // true
        }}

    推荐学习:《java视频教程

    以上就是详细介绍Java正则表达式之单字符匹配和预定义字符的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:java
    上一篇:Java总结分享之反射、枚举、Lambda表达式 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 一文教你JavaScript如何实现分支优化• Java知识点总结之多线程基础• javascript怎么求13阶乘• 一起来聊聊JavaScript的事件委托、判断URL是否合法及全排列• 实例JavaScript之实现数值的动态变化
    1/1

    PHP中文网