自学篇-正则表达式(七)

来源:互联网 发布:程序员相亲网站 编辑:程序博客网 时间:2024/06/16 03:46


正则表达式:符合一定规则的表达式

          作用:用于黄钻梦操作字符。

          特点:用一些特定的符号来表示一些代码操作。这样可以简化书写。

          好处:可以简化对字符串的复杂操作。

具体操作功能:】

1,匹配:String  matchs方法。用 规则匹配整个字符串,只要有一处不符合规则,就匹配结束就返回false。

String  regex = "[bcd]"    //表示这个字符串的第一个字符只能是b或c或d,有且只能有一个字符。

String  regex = "[^bcd]"  //表示除了bcd 取其他值都行。

String  regex = "[a-zA-Z]"  //表示去字母的值

..

2Greedy 数量词

?  表示  零次  或 一次 

*    表示  零次  或  多次

+   表示  一次  或  多次

{n}  表示 只有n次

{n,} 表示 至少有n次

{n,m} 表示至少有n次,但不能超过m次


2,切割:String split . 

                                        如 String s = "d:\\abc\\a.txt" , 以\\切割

        String  regex = "\\\\";

       String []  arr = s.split(regex);

                                        如 String s = "abc.bcd.dc";

        String regex = "\\.";

        String []  arr = s.split(regex);

                                        如  String s = "asdfasdfjkjjjasdfasdfkklkadf";  以叠词切割

        String regex = "";

        String regex="(.)\\1";              首先把 .用()封装成组然后服用加上\1    正则表达式为(.)\1 封装成字符串 为"(.)\\1"  


         提问 ((())()) 这有几组?     我们看有几左括号,就有几组。 哪个是第一组,也看左括号。


3,     替换

          String replace()

          String regex = "\\.";       

          String []  arr = s.replace(regex , newstr);

                                        如  String s = "dafsdfaddddddddddadfsdf";  多个连词d 替换成一个d

          String regex = "(.)\\1+" ;

          s.replace(regex , "&1");

          

一些练习:

1.将连续出现的java用一个java代替。
    public class Test {  
        public static void main(String[] args) {  
            String str = "ibmsunjavajavaoraclejavajavajavamicrosoftjava";  
            System.out.println(replace(str, "java"));  
        }  
      
        /**
         * @param input 原始的字符串
         * @param replacement 重复出现的字符串
         * @return 替换后的字符串
         */  
        public static String replace(String input, String replacement) {  
            return input.replaceAll("(" + replacement + ")+", replacement);  
        }  
    }  

 2.验证是否为邮箱地址
Java代码  收藏代码

    import java.util.regex.Pattern;  
      
    public class Test {  
        public static void main(String[] args) {  
            String str = "sxpujs@163.com";  
            System.out.println(checkEmail(str));  
        }  
      
        public static boolean checkEmail(String input) {  
            return Pattern.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+", input);  
        }  
    }  

 3.查找以Java,任意结尾的字符串
Java代码  收藏代码

    public static boolean checkJava(String input) {  
        return Pattern.matches("^java.*", input);  
    }  

 4.截取http://地址
Java代码  收藏代码

    import java.util.regex.Matcher;  
    import java.util.regex.Pattern;  
      
    public class Test {  
        public static void main(String[] args) {  
              
            String str = "dsdsds<http://127.0.0.1:8080/index.jsp>fdfhttp://www.g.cn;;;;;";  
            System.out.println(splitUrl(str));  
        }  
      
        public static String splitUrl(String input) {  
            Pattern pattern = Pattern  
                    .compile("(http://|https://){1}[\\w\\.\\-/:]+");  
            Matcher matcher = pattern  
                    .matcher(input);  
            StringBuffer buffer = new StringBuffer();  
            while (matcher.find()) {  
                buffer.append(matcher.group());  
                buffer.append("\r\n");  
            }  
            return buffer.toString();  
        }  
    }  

 5.满足1到35之间的正整数
Java代码  收藏代码

    import java.util.regex.Pattern;  
      
    public class Test {  
        public static void main(String[] args) {          
            for (int i = 0; i < 50; i++) {  
                System.out.println(i+":"+checkNumber(i+""));  
            }     
        }  
        public static boolean checkNumber(String input){  
            // 取1到35之间的数,排除以0开头的数,且不包括0  
            String regex = "[1-9]{1}|[1-2]{1}\\d{1}|3[0-5]{1}";  
            return Pattern.matches(regex, input);  
        }  
    } 

              

原创粉丝点击