黑马程序员-------正则表达式

来源:互联网 发布:仅限数据连接怎么取消 编辑:程序博客网 时间:2024/05/21 10:35
------<span style="color:#ff0000;"><span style="color:#ff0000;"><a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a><</span>/span>、期待与您交流! ---
<strong>1.正则表达式</strong>1.正则表达式:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用2.规则字符在java.util.regex Pattern类中 3. 常见组成规则 字符 字符类 预定义字符类 边界匹配器 数量词 1.1正则表达式_字符类String str = “hid”;验证: 字符串中是否以h开头,以d结尾,而且中间只有一个字符,而且是元音字母a、e、i、o、u? str.matches(“h[aeiou]d”); 字符串中是否以h开头,以d结尾,而且中间只有一个小写英文字母? str.matches(“h[a-z]d”);字符串是否以大写英文字母开头,后跟id?str.matches(“[A-Z]id”);字符串首字母是否非数字? str.matches(“[^0-9]id”);
public class Demo {public static void main(String[] args) {String str = "had";//1.字符串中是否以h开头,以d结尾,而且中间只有一个字符,而且是元音字母a、e、i、o、u?String regex = "h[aeiou]d";System.out.println("1." + str.matches(regex));//2.字符串中是否以h开头,以d结尾,而且中间只有一个小写英文字母?str = "h_d";regex = "h[a-z]d";System.out.println("2." + str.matches(regex));//3.字符串是否以大写英文字母开头,后跟id?str = "Hid";regex = "[A-Z]id";System.out.println("3." + str.matches(regex));//4.字符串首字母是否非数字?str = "1id";regex = "[^0-9]id";System.out.println("4." + str.matches(regex));//5.以b 或 c 或 d 开头,中间字符是 a,并且以 d 或 t 结尾    的字符串;str = "bad";regex = "[bcd]a[dt]";System.out.println("5." + str.matches(regex));}}

1.2 正则表达式_逻辑运算符

/* * 逻辑运算符: *  * 1.&& : 逻辑与(并且) * 2.|  : 逻辑或(或者) */public class Demo {public static void main(String[] args) {//1.判断小写辅音字母:String str = "a";String regex = "[a-z&&[^aeiou]]";System.out.println("1." + str.matches(regex));//2.判断首字母为h 或 H ,后跟一个元音字母,并以 d 结尾:regex = "[h|H][a|e|i|o|u]d";//效果同:[hH][aeiou]d}}

1.3 正则表达式_预定义字符类

1

.

任何字符

2

\d

任何数字,是[0-9]的简写形式;

3

\D

任何非数字,是[^0-9]的简写形式;

4

\s

任何空白字符。空格、制表符(\t)、换行符(\n)…

5

\S

任何非空白字符。是[^\s]的简写形式;

6

\w

任何大写、小写字母,或数字或下划线。是[a-zA-Z_0-9]的简写形式;

7

\W

任何非单词字符。是[^\w]的简写形式;

/* * 预定义字符类: */public class Demo {public static void main(String[] args) {//1.判断是否是三位数字:String str = "014";String regex = "[0-9][0-9][0-9]";System.out.println("1." + str.matches(regex));regex = "\\d\\d\\d";System.out.println("1-2." + str.matches(regex));//2.判断字符串是否以h开头,中间是任何字符,并以d结尾:"h.d"str = "h\\d";//h\dregex = "h.d";System.out.println("2." + str.matches(regex));//3.判断字符串是否是”had.”:str = "had.";regex = "had\\.";//或者:"had[.]"System.out.println("3." + str.matches(regex));//4.判断手机号码(1开头,第二位是:3或5或8,后跟9位数字):str = "18518151175";regex = "1[358]\\d\\d\\d\\d\\d\\d\\d\\d\\d";System.out.println("4." + str.matches(regex));}}

1.4 正则表达式_限定符

序列

示例

说明

1

+

1次或多次

2

0次或1次

3

*

0次或多次

4

{n}

恰好n次

5

{n,}

至少n次

6

{n,m}

至少n次,但不超过m次(包含m次)

/* * 限定符: *  *  */public class Demo {public static void main(String[] args) {//1.判断1位或多位数字:String str = "14389427584937438294732890574829057489200a";String regex = "\\d+";System.out.println("1." + str.matches(regex));//2.判断手机号码:str = "18518151175";regex = "1[358]\\d{9}";System.out.println("2." + str.matches(regex));//3.判断小数(小数点最多1次)str = "3324243214.343";regex = "\\d+\\.?\\d+";System.out.println("3." + str.matches(regex));//4.判断数字(可出现或不出现小数部分):str = "3.14";regex = "\\d+(\\.?\\d+)?";System.out.println("4." + str.matches(regex));//5.判断一个QQ号码(5-15位数字,不能以0开头):str = "1691530430";regex = "[1-9]\\d{4,14}";System.out.println("5." + str.matches(regex));//6.参考并修改上面第四个例子,使之满足:"22."的格式;str = ".3";regex = "\\d+(\\.?\\d*)?";System.out.println("6." + str.matches(regex));//7.满足:+20,-3,22.格式:str = "20.43274839";regex = "[+-]?\\d+(\\.?\\d*)?";System.out.println("7." + str.matches(regex));}}

1.5 正则表达式_分组

验证如下序列号:

•    String str = “DG8FV-B9TKY-FRT9J-6CRCC-XPQ4G”;

方式一:

•    str.matches(“[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}”;

方式二:

•    str.matches("([A-Z0-9]{5}-){4}[A-Z0-9]{5}");

•    或

•    str.matches(“[A-Z0-9]{5}(-[A-Z0-9]{5}){4}”);

1.6 正则表达式相关的_String的split方法


/* * String的split()方法:切割字符串 *  *  */public class Demo {public static void main(String[] args) {//A.切割字符串"aa,bb,cc";String str = "aa,bb,cc";String[] strArray = str.split("[,]");for(int i = 0 ;i < strArray.length ; i++){System.out.println("--" + strArray[i]);}//B.切割字符串"aa.bb.cc";str = "192.168.100.232";strArray = str.split("[.]");for(int i = 0 ;i < strArray.length ; i++){System.out.println("--" + strArray[i]);}//C.切割字符串“-1 99 4 23”;str = "-1 99 4 23";strArray = str.split("[ ]");for(int i = 0 ;i < strArray.length ; i++){System.out.println("--" + strArray[i]);}System.out.println("-----------------------------");//D."-1   99 4     23";str = "-1   99 4     23";strArray = str.split("[ ]+");for(int i = 0 ;i < strArray.length ; i++){System.out.println("--" + strArray[i]);}}}

1.7 正则表达式相关的_String的replaceAll方法

public class Demo {public static void main(String[] args) {//1.用”#”替换叠:"sdaaafghccccjkqqqqql";String str = "sdaaafghccccjkqqqqql";String regex = "(.)\\1+";System.out.println("将叠词替换为#:" + str.replaceAll(regex, "#"));//2.把多个叠词变成一个System.out.println("将叠词变为1个:" + str.replaceAll(regex, "$1"));//3.:有些论坛不允许发电话,qq号,银行账号等. 把数字用"*"替换str = "wert13245asfklwyoeworewsfd6744232433fafs";System.out.println("将数字替换为*符合:" + str.replaceAll("\\d+", "*"));}}

1.8 跟正则表达式相关的_Pattern类

import java.util.regex.Matcher;import java.util.regex.Pattern;public class Demo {public static void main(String[] args) { Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); System.out.println("是否匹配:" + b);  String str = "aaaaaaab"; String regex = "a*b"; System.out.println("匹配:" + str.matches(regex));}}



                                             
0 0
原创粉丝点击