栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java正则表达式理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java正则表达式理解

一、概念

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

二、匹配字符串

String类中的matches方法:可以匹配固定的字符串,也可以匹配符合一个模式的字符串集

“Java".matches("Java"); 结果为true

“Java is fun".matches("Java.*"); 结果为true

其中“Java.*”就是一个正则表达式。

三、常见的正则表达式

正则表达式由字面值符和特殊符号组成;

正则表达式

匹配

[abc]

a,b或c

[^abc]

除了a,b或者c外的任意字符

[a-e[m-p]]

a到e或m到p

d

一个数字,[0-9]

D

一个非数字

w

单词字符

W

非单词字符

p*

0或者多次出现模式p

p+

1次或者多次出现模式p

p?

0或1次出现模式p

p{n}

正好出现n次模式p

p{n,}

至少出现n次模式p

p{P}

一个标点字符!”#$%&’()*+,-./:;<=>?@[]^_’{|}~

四、替换和拆分字符串

String类中有repleacAll、replaceFirst和split方法实现替换和拆分字符串

repleaceAll方法可以替换所有匹配的子字符串;

repleaceFirst则替换第一个匹配的子字符串

如:

System.out.println("Java Java Java".repleacAll("v\w", "wi"));

显示:

       Jawi Jawi Jawi

System.out.println("Java Java Java".repleacFirst("v\w", "wi"));

显示:

       Jawi Java Java

split方法:split(regex,limit)可使用匹配的分隔符将一个字符串拆分为子字符串

其中regax为匹配模式(正则表达式),limit参数确定模式匹配多少次;

如:

"Java1HTML2Perl".split("\d",0);

拆分为Java,Html,Perl;

五、案例

正则表达式验证IP地址

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test{
    public static void main(String[] args) {
        String regex = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}";
        String answer = "Y";
        do {
            System.out.print("请输入 IP 地址:");
            Scanner scan = new Scanner(System.in);
            String IP= scan.next();    // 接收用户在控制台输入的IP
            Pattern pattern = Pattern.compile(regex);    // 编译正则表达式
            Matcher matcher = pattern.matcher(IP);    // 创建给定输入模式的匹配器
            boolean bool = matcher.matches();
            if(bool) {   // 如果验证通过
                System.out.println("输入的 IP 地址正确。");
            } else {
                System.out.println("输入的IP地址格式错误。");
            }
            System.out.print("是否继续输入?(Y/N 或者 y/n)");
            answer = scan.next();
        }while(answer.equalsIgnoreCase("Y"));
        System.out.println("程序结束。");
    }
}

案例参考:http://c.biancheng.net/view/864.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号