正则表达式

来源:互联网 发布:安卓ios数据互通手游 编辑:程序博客网 时间:2024/06/18 06:54
A:字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')

B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括

C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成

D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi

E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

 

 1 /* 2  * 正则表达式:符合一定规则的字符串。 3  */ 4 public class RegexDemo2 { 5     public static void main(String[] args) { 6         // 创建键盘录入对象 7         Scanner sc = new Scanner(System.in); 8         System.out.println("请输入你的QQ号码:"); 9         String qq = sc.nextLine();10 11         System.out.println("checkQQ:" + checkQQ(qq));12     }13 14     public static boolean checkQQ(String qq) {15         // String regex ="[1-9][0-9]{4,14}";16         // //public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式17         // boolean flag = qq.matches(regex);18         // return flag;19 20         //return qq.matches("[1-9][0-9]{4,14}");21         22         return qq.matches("[1-9]\\d{4,14}");23     }24 }

 

 1 /* 2  * 判断功能 3  *        String类的public boolean matches(String regex) 4  * 5  * 需求: 6  *         判断手机号码是否满足要求? 7  *  8  * 分析: 9  *         A:键盘录入手机号码10  *         B:定义手机号码的规则11  *             1343697598012  *             1368888686813  *             1386666888814  *             1345678901215  *             1312345678916  *             1891234567817  *             1888686787818  *             1863883388319  *         C:调用功能,判断即可20  *         D:输出结果21  */22 public class RegexDemo {23     public static void main(String[] args) {24         //键盘录入手机号码25         Scanner sc = new Scanner(System.in);26         System.out.println("请输入你的手机号码:");27         String phone = sc.nextLine();28         29         //定义手机号码的规则30         String regex = "1[38]\\d{9}";31         32         //调用功能,判断即可33         boolean flag = phone.matches(regex);34         35         //输出结果36         System.out.println("flag:"+flag);37     }38 }
 1 /* 2  * 分割功能 3  *        String类的public String[] split(String regex) 4  *        根据给定正则表达式的匹配拆分此字符串。  5  * 6  * 举例: 7  *         百合网,世纪佳缘,珍爱网,QQ 8  *         搜索好友 9  *             性别:女10  *             范围:"18-24"11  * 12  *         age>=18 && age<=2413  */14 public class RegexDemo {15     public static void main(String[] args) {16         //定义一个年龄搜索范围17         String ages = "18-24";18         19         //定义规则20         String regex = "-";21         22         //调用方法23         String[] strArray = ages.split(regex);24         25 //        //遍历26 //        for(int x=0; x<strArray.length; x++){27 //            System.out.println(strArray[x]);28 //        }29         30         //如何得到int类型的呢?31         int startAge = Integer.parseInt(strArray[0]);32         int endAge = Integer.parseInt(strArray[1]);33         34         //键盘录入年龄35         Scanner sc = new Scanner(System.in);36         System.out.println("请输入你的年龄:");37         int age = sc.nextInt();38         39         if(age>=startAge && age<=endAge) {40             System.out.println("你就是我想找的");41         }else {42             System.out.println("不符合我的要求,gun");43         }44     }45 }
 1 /* 2  * 分割功能练习 3  */ 4 public class RegexDemo2 { 5     public static void main(String[] args) { 6         // 定义一个字符串 7         String s1 = "aa,bb,cc"; 8         // 直接分割 9         String[] str1Array = s1.split(",");10         for (int x = 0; x < str1Array.length; x++) {11             System.out.println(str1Array[x]);12         }13         System.out.println("---------------------");14 15         String s2 = "aa.bb.cc";16         String[] str2Array = s2.split("\\.");17         for (int x = 0; x < str2Array.length; x++) {18             System.out.println(str2Array[x]);19         }20         System.out.println("---------------------");21 22         String s3 = "aa    bb                cc";23         String[] str3Array = s3.split(" +");24         for (int x = 0; x < str3Array.length; x++) {25             System.out.println(str3Array[x]);26         }27         System.out.println("---------------------");28         29         //硬盘上的路径,我们应该用\\替代\30         String s4 = "E:\\JavaSE\\day14\\avi";31         String[] str4Array = s4.split("\\\\");32         for (int x = 0; x < str4Array.length; x++) {33             System.out.println(str4Array[x]);34         }35         System.out.println("---------------------");36     }37 }
 1 /* 2  * 我有如下一个字符串:"91 27 46 38 50" 3  * 请写代码实现最终输出结果是:"27 38 46 50 91" 4  *  5  * 分析: 6  *         A:定义一个字符串 7  *         B:把字符串进行分割,得到一个字符串数组 8  *         C:把字符串数组变换成int数组 9  *         D:对int数组排序10  *         E:把排序后的int数组在组装成一个字符串11  *         F:输出字符串12  */13 public class RegexTest {14     public static void main(String[] args) {15         // 定义一个字符串16         String s = "91 27 46 38 50";17 18         // 把字符串进行分割,得到一个字符串数组19         String[] strArray = s.split(" ");20 21         // 把字符串数组变换成int数组22         int[] arr = new int[strArray.length];23 24         for (int x = 0; x < arr.length; x++) {25             arr[x] = Integer.parseInt(strArray[x]);26         }27 28         // 对int数组排序29         Arrays.sort(arr);30 31         // 把排序后的int数组在组装成一个字符串32         StringBuilder sb = new StringBuilder();33         for (int x = 0; x < arr.length; x++) {34             sb.append(arr[x]).append(" ");35         }36         //转化为字符串37         String result = sb.toString().trim();38         39         //输出字符串40         System.out.println("result:"+result);41     }42 }

 

 1 /* 2  * 替换功能 3  *      String类的public String replaceAll(String regex,String replacement) 4  *      使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。  5  */ 6 public class RegexDemo { 7     public static void main(String[] args) { 8         // 定义一个字符串 9         String s = "helloqq12345worldkh622112345678java";10 11         // 我要去除所有的数字,用*给替换掉12         // String regex = "\\d+";13         // String regex = "\\d";14         //String ss = "*";15         16         17         // 直接把数字干掉18         String regex = "\\d+";19         String ss = "";20 21         String result = s.replaceAll(regex, ss);22         System.out.println(result);23     }24 }
 1 /* 2  * 获取功能 3  *        Pattern和Matcher类的使用 4  *         5  *        模式和匹配器的基本使用顺序 6  */ 7 public class RegexDemo { 8     public static void main(String[] args) { 9         // 模式和匹配器的典型调用顺序10         // 把正则表达式编译成模式对象11         Pattern p = Pattern.compile("a*b");12         // 通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串13         Matcher m = p.matcher("aaaaab");14         // 调用匹配器对象的功能15         boolean b = m.matches();16         System.out.println(b);17         18         //这个是判断功能,但是如果做判断,这样做就有点麻烦了,我们直接用字符串的方法做19         String s = "aaaaab";20         String regex = "a*b";21         boolean bb = s.matches(regex);22         System.out.println(bb);23     }24 }
 1 /* 2  * 获取功能: 3  * 获取下面这个字符串中由三个字符组成的单词 4  * da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu? 5  */ 6 public class RegexDemo2 { 7     public static void main(String[] args) { 8         // 定义字符串 9         String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";10         // 规则11         String regex = "\\b\\w{3}\\b";12 13         // 把规则编译成模式对象14         Pattern p = Pattern.compile(regex);15         // 通过模式对象得到匹配器对象16         Matcher m = p.matcher(s);17         // 调用匹配器对象的功能18         // 通过find方法就是查找有没有满足条件的子串19         // public boolean find()20         // boolean flag = m.find();21         // System.out.println(flag);22         // // 如何得到值呢?23         // // public String group()24         // String ss = m.group();25         // System.out.println(ss);26         //27         // // 再来一次28         // flag = m.find();29         // System.out.println(flag);30         // ss = m.group();31         // System.out.println(ss);32 33         while (m.find()) {34             System.out.println(m.group());35         }36 37         // 注意:一定要先find(),然后才能group()38         // IllegalStateException: No match found39         // String ss = m.group();40         // System.out.println(ss);41     }42 }

 

0 0
原创粉丝点击