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

Day 04 (Java中正则表达式的详解)

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

Day 04 (Java中正则表达式的详解)

正则表达式是由普通字符(如英文字母)以及特殊字符(也称元字符)字符的文字模式给出一个匹配模板。专门用于操作字符串,可以简化对字符串的复杂操作。


定义

基本书写符号

   符号                     解释     示例                                    解释
                          转义符        *                                    符号"*"
     [ ]          可接收的字符串列表     [efgh]                 e、f、g、h中的任意一个字符
     [^]          不接收的字符串列表    [^abc] 除a、b、c之外的任意1个字符,包括数字和特殊符号 
      |   匹配" | "之前或之后的表达式      ab|cd                                 ab或者cd
   ()           将子表达式分组  (abc)                      将字符串abc作为一组
      -                   连字符       A-Z                         任意单个大写字母 

限定符

限定符将可选数量的数据添加到正则表达式

符号含义示例示例
*指定字符重复0次或n次(abc)*仅包含任意个abc的字符串,等效于w*
+指定字符重复1次或n次m+(abc)* 以至少1个m开头,后接任意个abc的字符串
指定字符重复0次或1次m+abc?以至少1个m开头,后接ab或abc的字符串
{n}只能输入n个字符[abcd]{3}由abcd中字母组成的任意长度为3的字符串
{n,}指定至少n个字符[abcd]{3,}由abcd中字母组成的任意长度不小于3的字符串
{n,m}指定至少 n 个但不多于 m 个匹配[abcd]{3,5}由abcd中字母组成的任意长度不小于3,不大于5的字符串
^指定起始字符^[0-9]+[a-z]*以至少1个数字开头,后接任意个小写字母的字符串
$指定结束字符^[0-9]-[a-z]+$以1个数字开头后接连字符“–”,并以至少1个小写字母结尾的字符串

匹配字符集

匹配字符集时预定义的用于正则表达式中的符号集。如果字符串与字符集中的任何一个字符相匹配,它就会找到这个正则表达式中的部分匹配字符集

符号含义示例示例
.匹配除 n 以外的任何字符a..b以a开头,b结尾,中间包括2个任意字符的长度为4的
d匹配单个数字字符,相当于[0-9]d{3}(d)?包含3个或4个数字的字符串
D匹配单个非数字字符,相当于[^0-9]D(d)*以单个非数字字符开头,后接任意个数字字符串
w匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z]d{3}w{4}以3个数字字符开头的长度为7的数字字母字符串
W匹配单个非数字、大小写字母字符,相当于[^0-9a-zA-Z]W+d{2}以至少1个非数字字母字符开头,2个数字字符结尾的

转义符: 表示把原本的斜杆转义,举例d表示所有数字,但在实际应用中需要写成\d

常用正则表达式举例

非负整数:“^d+$ ”

正整数:“ ^[0-9]*[1-9][0-9]*$” 

非正整数:“ ^((-d+)|(0+))$” 

整数:“ ^-?d+$” 

英文字符串:“ ^[A-Za-z]+$” 

英文字符数字串:“ ^[A-Za-z0-9]+$” 

英文数字加下划线串:“^w+$” 

E-mail地址:“^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$” 

URL: “^[a-zA-Z]+://(w+(-w+)*)(.(w+(-w+)*))*(?s*)?$” 

d:匹配一个数字字符,即0-9当中的一个

D:匹配一个非数字字符

w:匹配任意一个数字、字母、下划线

W:匹配所有w不匹配的字符

s:匹配空的字符、包括空格、制表符、换页符等

S:匹配所有s不匹配的字符

.:匹配除换行(n)之外的所有字符,1个.仅能匹配一个字符

Java正则表达式Pattern和Matcher

  1. //假设一个文本
    String content = "admin,1985年4月13日出生。随着years的流逝12346547很快就得十分恐怖附近的数据库happy吼吼beyond这几样是6786";
    
    //找到文本中所有的英文"[a-zA-Z]+"
    //找到文本中所有的数字"[0-9]+"
    //找到文本中所有的英文和数字"([a-zA-Z]+)|([0-9]+)"
    
    //先创建一个Pattern对象,模式对象,可以理解成就是一个正则表达式对象
    Pattern pattern = Pattern.compile("[a-zA-Z]+");
    
    //创建一个匹配器对象
    Matcher matcher = pattern.matcher(content);
    
    //理解:就是matcher匹配器按照pattern(模式/样式)到content文本中去匹配,找到就返回true,否则就返回
    //false
    
    //可以开始循环匹配
        while(){
            //匹配内容文本放到matcher.group(0)中去
            System.out.println("找到:" + matcher.group(0));
        }

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

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

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