正则表达式

来源:互联网 发布:老凤祥淘宝上怎么没了 编辑:程序博客网 时间:2024/06/03 07:05

1、 字符集
1、[1234] 表示 1,2,3,4 之一
2、[^12] 表示除了 1,2
3、[1-5] 表示 1,2,3,4,5
4、[a-f] 表示 a-f 之间的
[0-9a-fA-F] 表示一个16进制字符 0[xX][0-9a-fA-F]{1,8} 表示整数的16进制数表达式 [\w-]{8,15} 表示8-15个人以字符、下划线、数字及“-”
2、预定义字符集
1、\d 表示[0-9]
2、“.”点 表示任意字符
3、\w 表示单词字符 [0-9a-zA-Z_] 注:包含下划线“_”
4、\s 表示匹配空白: \t \n \r \b \p
5、\D (不常用)表示非数字
6、\S (不常用)表示非空白
7、\W (不常用)表示非单词字符 [0-9a-zA-Z_]
8、{m,n} 表示数词m到n个
9、{n} 表示数词n个,比如表示“5个以上”用{5,}
10、? 表示能出现0到1次 {0,1}
11、+ 表示能出现1到n次 {1,}
12、* 表示能出现0到n次 {0,}
3、 正则表达式以“^”开头,“$”结尾
4、 常用正则表达式写法
邮政编码:^[0-9][0-9][0-9][0-9][0-9][0-9]$

用户名规则:^\w{8,10}$
【解释】可出现8-10个单词或字符

电话号码:^(+86|0086)?\s?\d{11}$
例子:+86 13912345678

身份证号码:^\d{15}(\d{2}[0-9xX])?$

一个点的坐标:^\d+(,\s*|\s+)\d+$

日期:2011-01-30
^\d{4}-\d{2}-\d{2}$

IP地址:192.168.0.2
^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$

package com.wyg.test;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test{    public static void main(String[] args){        Scanner scanner = new Scanner(System.in);        while(true){            System.out.println("请输入要匹配的字符串:");            Pattern pattern = Pattern.compile(scanner.nextLine());            System.out.println("输入用来匹配的字符串:");            Matcher matcher = pattern.matcher(scanner.nextLine());            boolean found = false;            while(matcher.find()){                //java中的字符串范围都是包含前下标,不包含后下标                System.out.printf("找到\"%s\"起始位置:%d; 结束位置:%d.%n", matcher.group(), matcher.start(), matcher.end());                found = true;                if(!found){                    System.out.println("没有找到匹配!");                                  }            }        }    }}
package com.wyg.test;import java.util.Arrays;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test{    public static void main(String[] args){        Scanner console = new Scanner(System.in);        String regex = "^\\s*([A-Da-d](\\s+|,\\s*)?){1,4}\\s*$";        String str;        while (true) {            System.out.println("输入选择答案(A-D):");            str = console.nextLine();            // 检查用户的输入str符合正则表达式reg规定的规则            if (str.matches(regex)) { // str符合规则返回true                break; // 符合规则就结束输入            }            System.out.println("错了!再试试!");        }        // System.out.println(str.toUpperCase());        // " A B, C, " -> " A B C " -> "A B C" -> "A","B","C"        regex = "\\s+|,\\s*"; // 替换规则        str = str.replaceAll(regex, " ").toUpperCase().trim();        regex = "\\s+"; // 切分规则        String[] ans = str.split(regex); // 切分字符串为数组        Arrays.sort(ans); // 排序答案        System.out.println(Arrays.toString(ans));    }}
原创粉丝点击