鱼C论坛

 找回密码
 立即注册
查看: 2917|回复: 1

[学习笔记] Java-017正则表达式

[复制链接]
发表于 2018-12-23 22:42:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2018-12-23 22:42 编辑

1、简介
正则表达式:  指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串, 其实就是一种规则
① 正则表达式定义了字符串的模式。
② 正则表达式可以用来搜索、编辑或处理文本。
③ 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
主要使用的类:  String、Pattern、Matcher.
2、常见规则
1. 字符
        x       字符 x。举例:'a'表示字符a
        \\      反斜线字符。
        \n     新行(换行)符
        \r      回车符
2. 字符类
        [abc]        a、b 或 c(简单类)
        [^abc]     任何字符,除了 a、b 或 c(否定)
        [a-zA-Z]   a到 z 或 A到 Z,两头的字母包括在内(范围)
        [0-9]       0到9的字符都包括
3. 预定义字符类
        .       任何字符。我的就是.字符本身,怎么表示呢? \.
        \d     数字:[0-9]
        \w    单词字符:[a-zA-Z_0-9]
4. 边界匹配器
        ^       行的开头
        $        行的结尾
        \b       单词边界
[b]5. Greedy 数量词[b]
        X?           一次或一次也没有
        X*           零次或多次
        X+          一次或多次
        X{n}       恰好 n 次
        X{n,}      至少 n 次
        X{n,m}    至少 n 次,但是不超过 m 次
3、典型应用
1. 判断功能
        String ==> public boolean matches(String regex)
如果正则表达式的语法无效----抛出PatternSyntaxException 异常。
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String qq = sc.nextLine();
System.out.println("checkQQ:" + qq.matches("[1-9]\\d{4,14}"));
2. 分割功能
        String  ==>  public String[] split(String regex)
// 以,分割
String s1 = "aa,bb,cc";
String[] str1Array = s1.split(",");
// 以.分割
String s2 = "aa.bb.cc";
String[] str2Array = s2.split("\\.");
// 以空格分割
String s3 = "aa    bb                cc";
String[] str3Array = s3.split(" +");
for (int x = 0; x < str3Array.length; x++) {
        System.out.println(str3Array[x]);
}
3. 替换功能[/b]
        String  ==>  public String replaceAll(String regex,String replacement)
String s = "helloqq12345worldkh622112345678java";                
// 直接把数字干掉
String regex = "\\d+";
String ss = "";
String result = s.replaceAll(regex, ss);
System.out.println(result);
4. 获取功能[/b]
Pattern类   --> 正则表达式的编译表示形式。
Matcher类  --> 通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
典型的调用顺序:
        // 把规则编译成模式对象
        Pattern p = Pattern.compile("a*b");
        // 通过模式对象得到匹配器对象
        Matcher m = p.matcher("aaaaab");
        // 调用匹配器对象的功能
         boolean b = m.matches();

查找字符串中所有符合要求的子串:
find       ==>  public boolean find()
group    ==>  public String group()
String s = "da jia ting wo shuo,jin tian yao xia yu?";
String regex = "\\b\\w{3}\\b";
// 把规则编译成模式对象
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
while (m.find()) {
        System.out.println(m.group());
}

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 11:07:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 17:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表