黑马程序员_91_正则表达式

B站黑马程序员Python零基础课程三阶段笔记全集 阅读详情

 ——- android培训、java培训、期待与您交流! ———-

概述

正则表达式就是对字符串进行操作,它比利用String类中的方法操作要更为简单.
正则常见操作就有4种

  1. 匹配–就是对整个字符串进行匹配,判断true或false
  2. 切割–就是把一个字符串切割成多个字符串
  3. 替换–就是把指定内容替换成新字符串
  4. 获取–就是根据指定规则,获取符合规则的字符串

    正则表达式规则
    字符类
    [abc] a、b 或 c(简单类)
    [^abc] 任何字符,除了 a、b 或 c(否定)
    [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)

    预定义字符类
    . 任何字符(与行结束符可能匹配也可能不匹配)
    \d 数字:[0-9]
    \D 非数字: [^0-9]
    \s 空白字符:[ \t\n\x0B\f\r]
    \S 非空白字符:[^\s]
    \w 单词字符:[a-zA-Z_0-9]
    \W 非单词字符:[^\w]

    Greedy 数量词
    X? X,一次或一次也没有
    X* X,零次或多次
    X+ X,一次或多次
    X{n} X,恰好 n 次
    X{n,} X,至少 n 次
    X{n,m} X,至少 n 次,但是不超过 m 次

    边界匹配器
    ^ 行的开头
    $ 行的结尾
    \b 单词边界
    \B 非单词边界
    \A 输入的开头
    \G 上一个匹配的结尾
    \Z 输入的结尾,仅用于最后的结束符(如果有的话)
    \z 输入的结尾

练习

示例1

/*
 * 正则表达式。
 *
 * 正则表达式用于操作字符串数据。
 * 通过一些特定的符号来体现的。
 * 所以我们为了掌握正则表达式,必须要学习一些符号。
 *
 * 虽然简化了,但是阅读性差。
 */
public class RegexDemo
{
        public static void main(String[] args){
                String qq = "123456701";
                //checkQQ(qq);

                //正则表达式。
                String regex = "[1-9][0-9]{4,14}";
                boolean b = qq.matches(regex);
                System.out.println(qq + ":" + b);
        }
        /*
         * 需求:定义一个功能对QQ号进行校验。
         * 需求:长度5~15,只能是数字,0不能开头。
         */
         public static void checkQQ(String qq){

                int len = qq.length();

                if(len >= 5 && len <= 15){
                        if(!qq.startsWith("0")){
                                try{
                                        long l = Long.parseLong(qq);

                                        System.out.println(l + ":正确");
                                }catch(NumberFormatException e){
                                        System.out.println(qq + ":含有非法字符");
                                }
                        }else{
                                System.out.println(qq + ":不能0开头");
                        }
                }else{
                        System.out.println(qq + ":长度错误");
                }
         }
}

运行结果图
这里写图片描述

示例2

public class RegexDemo
{
        public static void main(String[] args){

                String str = "aoob";
                String reg = "ao?b";

                boolean b = str.matches(reg);
                System.out.println(str + ":" + b);

                reg = "ao+b";
                b = str.matches(reg);
                System.out.println(str + ":" + b);

                str = "ab";
                reg = "ao+b";
                b = str.matches(reg);
                System.out.println(str + ":" + b);

                str = "ab";
                reg = "ao*b";
                b = str.matches(reg);
                System.out.println(str + ":" + b);

                str = "aooooooob";
                reg = "ao{4,}b";
                b = str.matches(reg);
                System.out.println(str + ":" + b);

                reg = "ao{4,6}b";
                b = str.matches(reg);
                System.out.println(str + ":" + b);
        }
}

运行结果图
这里写图片描述
示例3
正则表达式四大常见功能演示

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

public class RegexDemo
{
        public static void main(String[] args){
                functionDemo_1();
                System.out.println("------------------------");
                functionDemo_2();
                System.out.println("------------------------");
                functionDemo_3();
                System.out.println("------------------------");
                functionDemo_4();
                System.out.println("------------------------");
                functionDemo_5();
                System.out.println("------------------------");
                functionDemo_6();
                System.out.println("------------------------");
                functionDemo_7();
        }

        /*
         * 正则表达式对字符串的常见操作
         * 1. 匹配
         *                其实使用的就是String类中的matches方法。
         *
         * 2. 切割
         *                其实使用的就是String类中的split方法。
         * 
         * 3. 替换
         *
         * 4. 获取
         */

         /*
          * 演示匹配
          */
        public static void functionDemo_1(){
                //匹配手机号码是否正确
                String tel = "15800001111";

                String regex = "1[358]\\d{9}";

                boolean b = tel.matches(regex);

                System.out.println(tel + ":" + b);
        }

         /*
          * 演示切割
          */
        public static void functionDemo_2(){
                String str = "zhangsan      xiaoqiang             zhaoliu";

                String[] names = str.split(" +");

                for(String name : names){
                        System.out.println(name);
                }
        }

        public static void functionDemo_3(){
                String str = "zhangsan.xiaoqiang.zhaoliu";

                String[] names = str.split("\\.");

                for(String name : names){
                        System.out.println(name);
                }
        }

        /*
         * 在表达式 ((A)(B(C))) 中,存在四个这样的组: 
         * 1 ((A)(B(C))) 
         * 2 \A 
         * 3 (B(C)) 
         * 4 (C) 
         * 组零始终代表整个表达式。 
         */
        public static void functionDemo_4(){
                String str = "zhangsanttttxiaoqiangmmmmmzhaoliu";

                //(.)表示一组,\\1+表示与第1组相同的出现1次以上
                String[] names = str.split("(.)\\1+");

                for(String name : names){
                        System.out.println(name);
                }
        }

         /*
          * 演示替换
          */
        public static void functionDemo_5(){
                String str = "zhangsanttttxiaoqiangmmmmmzhaoliu";

                //$表示前一个参数的第一组
                str = str.replaceAll("(.)\\1+","$1");

                System.out.println(str);
        }

        public static void functionDemo_6(){
                String str = "15800001111";

                str = str.replaceAll("(\\d{3})(\\d{4})(\\d{4})","$1****$2");

                System.out.println(str);
        }

        /*
          * 演示获取
          * 将正则规则进行对象的封装。
          * Pattern p = Pattern.compile("a*b");
          * 通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher。
          * boolean b = m.matches();
          */
        public static void functionDemo_7(){
                String str = "da jia hao,ming tian bu fang jia";

                // \\b表示单词边界
                String regex = "\\b[a-z]{3}\\b";

                //1. 将正则封装成对象
                Pattern p = Pattern.compile(regex);

                //2. 通过正则对象获取匹配器对象
                Matcher m = p.matcher(str);

                //使用Matcher对象的方法对字符串进行操作。
                //既然要获取三个字母组成的单词。
                //查找:find();
                while(m.find()){
                        System.out.println(m.group());//获取匹配的子序列
                        System.out.println(m.start() + ":" + m.end());
                }
        }
}

运行结果图

这里写图片描述

Pattern类及其练习

Pattern类为正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建Matcher对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
练习1

public class RegexTest
{
        public static void main(String[] args){
                test();
        }

        /*
         * 1. 治疗口吃:我我...我我...我我我我...要要要要...要要要要...学学学学学...学学编编...编编编编..编..编...程程...程程程
         * 2. 对ip地址排序
         * 3. 对邮件地址校验
         */

         /*
          * 1. 治口吃
          */
          public static void test(){
                String str = "我我...我我...我我我我...要要要要...要要要要...学学学学学...学学编编...编编编编..编..编...程程...程程程";

                //1. 将字符串中.去掉,用替换。
                str = str.replaceAll("\\.+","");

                //2. 替换叠词
                str = str.replaceAll("(.)\\1+","$1");
                System.out.println(str);
          }
}

运行结果图

这里写图片描述
练习2

import java.util.TreeSet;
import java.io.PrintStream;

public class RegexTest
{
        public static void main(String[] args){
                test();
        }

        /*
         * ip地址排序。
         * 192.168.10.34 127.0.0.1 3.3.3.3 105.70.11.55
         */

        public static void test(){
                String ip_str = "192.168.10.34 127.0.0.1 3.3.3.3 105.70.11.55";

                //1. 为了让ip可以按照字符串顺序比较,只要让ip的每一段的位数相同。
                //所以,补零,按照每一位所需最多0进行补充,每一段都加两个0。

                ip_str = ip_str.replaceAll("(\\d+)","00$1");
                System.out.println(ip_str);

                //然后每一段保留数字3位。
                ip_str = ip_str.replaceAll("0*(\\d{3})","$1");
                System.out.println(ip_str);

                //1. 将ip地址切出。
                String[] ips = ip_str.split(" +");

                TreeSet<String> ts = new TreeSet<String>();

                for(String ip : ips){
                        ts.add(ip);
                }

                for(String ip : ts){
                        System.out.println(ip.replaceAll("0*(\\d+)","$1"));
                }
        }
}

运行结果图
这里写图片描述
练习3

import java.util.TreeSet;
import java.io.PrintStream;

public class RegexTest
{
        public static void main(String[] args){
                test();
        }

        //对邮件地址校验。        
        public static void test(){

                String mail = "abc1@sina.com";

                String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{1,3})+";

                boolean b = mail.matches(regex);

                System.out.println(mail + ":" + b);
        }
}

运行结果图
这里写图片描述
练习4

import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.IOException;

/*
 * 网页爬虫:其实就是一个程序用于在互联网中获取符合指定规则的数据。
 * 爬取邮箱地址。
 */
public class RegexTest
{
        public static void main(String[] args) throws IOException {
                List<String> list = getMails();

                for(String mail : list){
                        System.out.println(mail);
                }
        }

        public static List<String> getMails() throws IOException {
                //1. 读取源文件。
                BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));

                //2. 对读取的数据进行规则的匹配。从中获取符合规则的数据。
                String mail_regex = "\\w+@\\w+(\\.\\w+)+";

                List<String> list = new ArrayList<String>();

                Pattern p = Pattern.compile(mail_regex);

                String line = null;

                while((line = bufr.readLine()) != null){
                        Matcher m = p.matcher(line);

                        while(m.find()){
                                list.add(m.group());
                        }
                }

                //3. 将符合规则的数据存储到集合中。
                return list;
        }
}

运行结果图
这里写图片描述
练习5

import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class RegexTest
{
        public static void main(String[] args) throws IOException {
                List<String> list = getMailsByWeb();

                for(String mail : list){
                        System.out.println(mail);
                }
        }

        public static List<String> getMailsByWeb() throws IOException {

                URL url = new URL("http://www.itheima.com/aboutt/1376.html");

                BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));

                String mail_regex = "\\w+@\\w+(\\.\\w+)+";

                List<String> list = new ArrayList<String>();

                Pattern p = Pattern.compile(mail_regex);

                String line = null;

                while((line = bufr.readLine()) != null){
                        Matcher m = p.matcher(line);

                        while(m.find()){
                                list.add(m.group());
                        }
                }

                return list;
        }
}

运行结果图
这里写图片描述

十二、基于FPGA实现slave SelectMAP配置逻辑 slave SelectMAP配置 阅读详情

相关推荐

手把手教你用ZEMAX复现贝塞尔光束:从Thorlabs锥透镜到Edmund透镜的完整光路搭建

本文详细介绍了如何在ZEMAX光学设计软件中复现贝塞尔光束,从Thorlabs锥透镜到Edmund透镜的完整光路搭建过程。通过逐步指导,帮助研究人员和工程师掌握光学设计技巧,实现无衍射特性的贝塞尔光束生成,适用于激光加工和生物成像等领域。

weixin_33737774的博客 178

黑马程序员 Java基础 正则表达式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一 概述  就是符合一定规则的字符串   二 常用规则 A:字符 x 字符 x。举例:'a'表示字符a \\ 反斜线字符。 \n 新行(换行)符 ('\u000A')  \r 回车符 ('\u000D') B:字符类 [abc] a、b 或 c(简单类)  [^abc

hn196828828的博客 390

不止于算力:深入鲲鹏920的片上网络(NoC)与一致性协议HCCS,看华为如何优化数据流转

本文深入解析了鲲鹏920处理器的片上网络(NoC)架构和一致性协议HCCS,揭示了华为如何通过创新的环总线设计和私有协议优化数据流转效率。文章详细介绍了鲲鹏920在多die、多芯片环境下的高效协同机制,包括环总线架构、HCCS协议精妙设计及物理实现创新,为云服务场景提供了高性能解决方案。

weixin_30681121的博客 251

黑马程序员——基础知识——正则及常见类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Day14    14.01 正则表达式的概述和简单实用        1、正则表达式是指一个用来描述或匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则,有自己特殊的应用        2、案例演示        需求:校验qq号码 1、要求必须是5-15位数字

pan1564335的博客 469

一文读懂Cache一致性原理

本文介绍了为什么需要维护cache一致性、一致性协议的本质和类别,以及如何设计一致性协议。

W1Z1Q的专栏 6837

手把手教你用Matlab为PMSM电流环设计2P2Z补偿器(附与PI对比)

本文详细介绍了如何使用Matlab的controlSystemDesigner工具为永磁同步电机(PMSM)电流环设计2P2Z补偿器,并与传统PI控制器进行性能对比。通过频域分析和时域仿真,展示了2P2Z补偿器在提升带宽、减少超调等方面的优势,为高性能伺服驱动和精密运动控制提供了实用解决方案。

weixin_42551227的博客 376

黑马程序员——Java常用类笔记(下)【Math类、Random类、System类、Date类】

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 常用类总结(下) 目录: 五、正则表达式(Pattern,Matcher) 六、Math类 Random类 System类 七、BigInteger类/BigDecimal类 八、Date类/DateFormat类/Calendar类 -------------

bayueqinglian的专栏 601

ChatGPT启蒙之旅:弟弟妹妹的关键概念入门

本文主要介绍了ChatGPT启蒙之旅:弟弟妹妹的关键概念探险,希望能对初学大模型的同学们有所帮助。 文章目录 1. 背景 2. GPT是个什么样的人? 3. GPT使用的核心思维 4. GPT使用的场景介绍

herosunly的博客 16万+

黑马程序员_java语言_常见对象的概述

23.01_常见对象(正则表达式的概述和简单使用) A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。 B:案例演示 需求:校验qq号码. 1:要求必须是5-15位数字2:0不能开头3:必须都是数字 a:非正则表达式实现 public static boolean c

sjw798056265的博客 473

消息平台接入实战:Hermes Agent 实现微信/钉钉日常任务自动化的 4 步配置

揭示 Hermes Agent 接入微信/钉钉时高频失效的根本原因——非 API 调用问题,而是上下文边界缺失;详解通过 soul.md 锁定人格基线、skills/ 目录原子化封装技能、CLAUDE.md 控制记忆节奏、Docker 环境适配四步构建可信赖自动化信任链,并给出身份证号过滤、中文标点

weixin_42520239的博客 162

支付域——账户系统设计

本文详细介绍了支付域中的账户系统设计,包括账户的定义、核心特征、常见类型以及在支付系统中的作用。账户是支付平台为用户、商户等主体建立的资金记录单元,具有资金归属、余额管理、交易流水、资金安全等核心特征。常见账户类型包括用户账户、商户账户、平台账户、保证金账户等。此外,还探讨了账户与银行账户的区别、账户的结构设计、如何设计账户类型以及账户系统设计等内容。

庄小焱 1189

黑马程序员_Java语言_常见对象(正则,Random,Calendar)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! 正则,Random,Calendar

jiao142857的博客 464

Deepseek Engram 论文全面解读

以下是对 DeepSeek 与北京大学于联合发布的论文《》(简称Engram 论文)的。

lpfasd123的博客 355

【184天】黑马程序员27天视频学习笔记【Day14-中】

叨逼叨两句 情绪上的紧张,让人真的很累。 14-(6-10):正则表达式 给定字符串数字排序 package com.test.regex; import java.util.Arrays; public class Demo06 { public static void main(String[] args) { ...

weixin_33885676的博客 102

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript系列--对象

alert(a+b)通过function关键字定义。

2401_89694181的博客 565

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

伸手党福利文,Python入门大全

文章目录一、自学时间安排Day1-Day15 Python语言基础Day16-Day20 Python语言进阶Day31-Day35 Linux操作系统Day35-Day40 数据库基础和进阶Day41-Day55 实战DjangoDay56-Day60 实战FlaskDay61-Day65 实战Tornado入门Day66-Day75 爬虫开发Day76-Day90 数据处理和机器学习Day91-Day100 团队项目开发二、了解Python的就业方向2.1 Python在AI领域的介绍三、Python2

黑马程序员官方博客 782

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

黑马程序员_日记8_JavaSE阶段性习题练习及复习

——- android培训、java培训、期待与您交流! ———-JAVASE阶段性习题练习及复习这篇博客主要是把毕老师出的前四大练习题全部做了一遍,经我反复测试和修改后写得一些JAVASE基础总结。 练习一 已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。 90~100为等级A,80~89为等级B,70~79为等级C, 60~69为等级D,0~59为等级E。

itheima_1llt的专栏 3599

黑马程序员_日记27_JavaString类型的数字排序问题

——- android培训、java培训、期待与您交流! ———-输入一int型的数字字符串 用空格间隔,从小到大排序后,以字符串返回。 “12 0 99 -7 30 4 100 13” 要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。“-7 0 4 12 13 30 99 100”分析: 1 用split方法把字符串切割成String[]类型的数组。 2 把String[]数组

itheima_1llt的专栏 2677

黑马程序员_日记25_Java两个字符串的最大相同子串

——- android培训、java培训、期待与您交流! ———-/* 获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 "abcwerthelloyuiodef" "cvhellobnm"模拟一下: 第一趟: 最大子串:cvhellobnm ↑--------↑ 在长字符串中查找 abcwerthelloyuiodef ↑---

itheima_1llt的专栏 784

黑马程序员_日记26_Java字典序排序练习

——- android培训、java培训、期待与您交流! ———-对字符串中字符进行自然顺序排序。 例如,”vcz1bdAa+cs”–>abccdsvz 思路: 1 把字符串变成字符数组 2 对数组进行排序 3 找到字符数组中’a’第一次出现的位置找到 4 计算要转换的字符个数 5 把字符数组变成字符串import java.util.Arrays; class StringSortD

itheima_1llt的专栏 755

黑马程序员_日记33_Java迭代器基本使用

——- android培训、java培训、期待与您交流! ———-迭代器Iterator测试查阅API,得到迭代器的基本常识: 对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同: 迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection

itheima_1llt的专栏 747

黑马程序员_日记2--Java数组

——- android培训、java培训、期待与您交流! ———-数组复习总结一、数组的定义数组的概念所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序

itheima_1llt的专栏 716

黑马程序员_日记9_Java学习感言

——- android培训、java培训、期待与您交流! ———-学习感言原计划快速看一遍JAVASE视频复习一下,然后直接面试。但是从16号到今天,已经10天了,我才刚刚完成10天的学习。冷静下来,仔细想想还是方法有问题。前段时间听课都没有压力,也就没有经常动手练习,但是累积到做练习四的时候,才发现并不是很熟练,于是沉下心来花了2天的时间回头把所有的练习都不使用eclipse运行一遍,现在感觉基础

itheima_1llt的专栏 713

黑马程序员_日记21_JavaString常用方法

——- android培训、java培训、期待与您交流! ———-String类用来描述字符串,它提供了许多的方法来操作字符串。 那么,在String众多的方法中,常用的方法有哪些呢??1 获取1.1 字符串的长度int length(); 示例:String str = "abcdefg"; str.length();注意不是str.length;1.2 根据索引获取字符char c

itheima_1llt的专栏 662

黑马程序员_日记59_TreeMap自定义对象练习

——- android培训、java培训、期待与您交流! ———-TreeMap自定义对象存取练习需求:每一个学生都有对应的归属地。 学生Student,地址String。 学生属性:姓名,年龄。 注意:姓名和年龄相同的视为同一个学生。 保证学生的唯一性。 对学生对象的年龄进行升序排序,用Comparable实现; 对学生的姓名进行字典序排序,用Comparator实现。因为数据是以键值

itheima_1llt的专栏 626

黑马程序员_90_网络编程Socket

——- android培训、java培训、期待与您交流! ———-概述网络参考模型OSI(Open System Interconnection 开放系统互连)参考模型 TCP/IP 参考模型 图示如下 七层模型 1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化

itheima_1llt的专栏 611
上一篇: 黑马程序员_90_网络编程Socket
下一篇: 黑马程序员_92_反射
回到未来2020
博客等级 码龄12年 27粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值