正则表达式 ╰半夏微凉° 2022-04-03 09:38 263阅读 0赞 正则表达式 在线正则表达式测试:[http://tool.oschina.net/regex/][http_tool.oschina.net_regex] 正则表达式基础 正则表达式概述 常用字符集合 元字符 转义字符 分组 “^“和”$” ![概述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70] 一、正则表达式概述 1、为什么要使用正则表达式 编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要(比如注册用户账号时,密码只能设置6~32位)。 ![为什么使用正则表达式][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 1] 2.什么是正则表达式 正则表达式(regular expression)就是用来描述字符串逻辑规则的工具 很多语言多对正则表达式提供了支持,例如JavaScript、Java等; 不同语言中使用正则表达式时,正则表达式的具体编写规则会有些小的差别,但是大体相同 二、常用字符集合 正则表达式本身也是个字符串。由一些普通字符和一些元字符组成。 普通字符包括大小写的字母和数字,而元字符就是具有特殊的含义的字符 1普通字符集 正则表达式 描述 \[xyz\] 表示匹配x,y或z中任意一个字符 \[^xyz\] 表示匹配除x,y,z以外的任意一个字符 \[a-z\] 匹配介于a到z之间的任意一个字符 \[a-zA-Z0-9\] 匹配介于a到z,或A到Z,或0到9的任意一个字符 \[x|y\] 匹配x或y中任意一个字符 \[a-z&&\[^abcd\]\] 匹配a到z中不包含a,b,c,d的任意一个字符 ![元字符][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 2] 2匹配matches方法 public boolean matches(String regex) String类提供了将一个字符串与给定的正则表达式匹配,返回匹配结果(全匹配)的方法 案例:定义表达式字符串,用matches方法测试上面字符集合 String reg1="\[xyz\]"; System.out.println(“x”.matches(reg1));//true System.out.println(“X”.matches(reg1));//false 正则表达式区分大小写 String reg2="\[^xyz\]"; String reg3="\[a-z\]"; String reg4="\[a-zA-Z0-9\]"; String reg5="\[x|y\]"; String reg6="\[a-z&&\[^abcd\]\]"; System.out.println(“x”.matches(reg2));//匹配除x,y,z以外的任意一个字符 System.out.println(“m”.matches(reg3));//匹配介于a到z之间的任意一个字符 System.out.println(“1”.matches(reg4));//匹配介于a到z,或A到Z,或0到9的任意一个字符 System.out.println(“y”.matches(reg5);//匹配x或y中任意一个字符 System.out.println(“m”.matches(reg6));//匹配a到z中不包含a,b,c,d的任意一个字符 三、元字符 正则表达式 描述 \\d 匹配一个数字字符。等价于\[0-9\] \\D 匹配一个非数字字符。等价于\[^0-9\] \\s 匹配空白字符,包括空格、制表符、换页符等等 \\S 匹配任何非空白字符 \\w 匹配包括下划线的任何单词字符。相当于“\[A-Za-z0-9\_\]” \\W 匹配任何非单词字符。等价于“\[^A-Za-z0-9\_\]”。 . 匹配除“\\r\\n”之外的任意字符 ![元字符][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 3] public class Test1 \{ public static void main(String\[\] args) \{ String s1="\\d"; String s2="\\D"; String s3="\\s"; String s4="\\S"; String s5="\\w"; String s6="\\W"; String s7="."; System.out.println(“2”.matches(s1));//匹配一个0到9数字字符 System.out.println(“a”.matches(s2));//匹配一个非数字字符 System.out.println(" “.matches(s3));//匹配一个空白字符 System.out.println(“c”.matches(s4));//匹配任意一个非空白字符 System.out.println(“d”.matches(s5));//匹配包括下划线的任何单词字符 System.out.println(”\*".matches(s6));//匹配任何非单词字符 System.out.println(“b”.matches(s7));//匹配除“\\r\\n”之外的任意字符 \} \} 数量元字符 正则表达式 说明 A? A表达式出现0次或者一次 A+ A表达式出现一次或者多次 A\* A表达式出现0次或者多次 A\{n\} A表达式出现n次 A\{n,\} A表达式至少出现n次 A\{n,m\} A表达式至少出现n次,最多出现m次 ![元字符][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 4] 案例: 邮政编码,0-9数字出现6次 \[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\] 可以简化\[0-9\]\{6\} 再次简化\\d\{6\} 规则解释:左边紧邻的字符出现6次 匹配用户名规则,可以出现8~10个单词或字符 \\w\{8,10\} 案例: public class Test2 \{ public static void main(String\[\] args) \{ String reg1="\\d\{6\}"; String reg2="\[0-9\]\{6\}"; String reg3="\\w\{8,10\}"; String reg4="\\s?"; System.out.println(“123456”.matches(reg1));//匹配\\d\{6\},即匹配6个数字 System.out.println(“647789”.matches(reg2));//匹配\[0-9\]\{6\},即匹配6个数字 System.out.println(“absnchdh”.matches(reg3));//匹配出现8到10个单词或字符 System.out.println(" ".matches(reg4));//匹配空白(空格)出现 0-1 次 String reg5 = “^Java.\*”;//查找以Java开头,任意结尾的字符串 System.out.println(“Java不是人”.matches(reg5)); \} \} 四、转义字符 在正则表达式规则中,有12个字符被保留作特殊用途。他们是: \[ \] \\ ^ $ . | ? \* + ( ) 比如“+”代表的是数量出现1到多次的意思,但有时候需要匹配“加”号本身比如“+0086”的匹配规则,则需要通过转义字符“\\”来实现转换含义。也就是说在正则表达式中"+"默认是数量词,需要转义才能变成“加号”的意思,所以正确的匹配规则为: \+\[0-9\]\{4\} 在Java中,要注意,“\\”是特殊的字符,会先被编译器处理,然后再传递给正则引擎 Java中正确定义正则方法:"\\+\[0-9\]\{4\}" 五、分组 正则表达式中可以通过"()“来分组,将括号里面的一系列正则表达式看做一个整体。 如:验证整数或者小数:1\+(\[.\]\[0-9\]+)\{0,1\}$ 中圆括号里面的规则(\[.\]\[0-9\]+)表示将出现”."一次,0~9数字一次以上 (\[.\]\[0-9\]+)\{0,1\}表示圆括号里面的内容会出现0~1次 六、"^“和” " 边 界 匹 配 “ ” 表 示 从 字 符 串 开 头 位 置 匹 配 “ " 边界匹配 “^”表示从字符串开头位置匹配 “ "边界匹配“”表示从字符串开头位置匹配“”表示匹配到字符串结尾位置 如:匹配用户名规则,可以出现6~10个单词或字符 \\w\{6,10\} ^\\w\{6,10\}$ 如果使用第一种写法,字符串"woaibeijing\_1"是可以通过验证的 而使用第二种规则,表示必须从头到尾完全匹配,则不能通过验证(注意不能用matches()方法验证,matches()方法本身就是全匹配,第一种写法也无法通过验证) 案例: 检测用户名或密码是否合法,第一个字符必须是英文,可以包含大小写英文、下划线、0-9数字,长度为6~16位。 正则规则:2\\w\{5,15\}$ public class Test3 \{ public static void main(String\[\] args) \{ String s1="3\\w\{5,15\}$"; System.out.println(“abcdefg012345678”.matches(s1)); \} \} -------------------- 1. 0-9 ↩︎ 2. a-zA-Z ↩︎ 3. a-zA-Z ↩︎ [http_tool.oschina.net_regex]: http://tool.oschina.net/regex/ [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70]: /images/20220403/4119d91386b64191988b39b86de6660d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 1]: /images/20220403/668c3e17344e4f749bf6b3c14bbce44f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 2]: /images/20220403/130645ad8c934f8d95371285f920bf9f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 3]: /images/20220403/2ca4dc5b1d0944f79691e1495a359723.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAyNDcw_size_16_color_FFFFFF_t_70 4]: /images/20220403/41de2ea92f5144cb90637702e9563b48.png
相关 【正则表达式】正则表达式及其应用 正则表达式 1. 什么是正则表达式? 百度百科提供的概念是这样的:正则表达式,又称规则表达式\\。\\(英语:Regular Expression,在代码中常简写为 旧城等待,/ 2022年09月15日 06:08/ 0 赞/ 449 阅读
相关 正则表达式 看一遍就完全搞定的正则表达式教程 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 墨蓝/ 2022年06月01日 11:59/ 0 赞/ 196 阅读
相关 正则表达式 > 概念:是指用来描述或者匹配一系列符合某个语法规则的字符的单个字符串,其实就是一种规则。有自己的特殊应用。 > String类中有一个 String.mat 川长思鸟来/ 2022年05月19日 08:15/ 0 赞/ 201 阅读
相关 正则表达式 正则表达式简介: 正则表达式,又称规则表达式,正则表达式是对字符串(包括普通字符(例如,[a-Z]之间的字母)和特殊字符(称为“元字符”))操作的一 种 约定不等于承诺〃/ 2022年04月18日 03:22/ 0 赞/ 264 阅读
相关 正则表达式 正则表达式解析 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。 例如,“n”匹配字符“n”。“\n”匹配一个换行符。 待我称王封你为后i/ 2022年04月17日 03:18/ 0 赞/ 211 阅读
相关 正则表达式 正则表达式 在线正则表达式测试:[http://tool.oschina.net/regex/][http_tool.oschina.net_regex] 正则表达式基础 ╰半夏微凉°/ 2022年04月03日 09:38/ 0 赞/ 264 阅读
相关 正则表达式 [在线正则表达式测试工具][Link 1] [深入理解正则表达式][Link 2] (1)var reg = /\d/; //先看reg匹配到的字符串只能是单个数字 我不是女神ヾ/ 2022年01月20日 06:11/ 0 赞/ 241 阅读
相关 正则表达式 摘抄自【[维基百科正则表达式][Link 1]】 表达式全集 <table style="border:10px solid a9a9a9;"> <tbody> 蔚落/ 2022年01月10日 04:29/ 0 赞/ 304 阅读
相关 正则表达式 package day_34_正则表达式; import java.util.Arrays; / 正则表达式:就是一个模 末蓝、/ 2021年10月26日 13:18/ 0 赞/ 391 阅读
还没有评论,来说两句吧...