黑马程序员_正则表达式

来源:互联网 发布:java获取每个月第一天 编辑:程序博客网 时间:2024/06/07 11:38

------- android培训java培训、期待与您交流! ----------


正则表达式:符合一定规则的表达式
作用:用于专门操作字符串。
特点:用一些特定的符号,来表示一些代码操作。这样就简化书写。
所以学习正则表达式,就是在学习特殊符号的使用。
好处:可以简化对字符串的复杂操作。


学习这个知道处理的方法就行,具体语法,可以参考API文档。


具体操作功能:
1、匹配:String类中的matches()方法。用规则匹配整个字符串。只要有一处不符合规则就匹配结束,返回false。

eg:

匹配QQ号:

/** * 匹配QQ号 */private static void matchQQ() {String qq = "188888";//正则表达式,要求(1到9开头,后面紧跟4到14为数字)String regex = "[1-9][0-9]{4,14}";//这边是String的matches方法boolean flag = qq.matches(regex);System.out.println(flag);}
匹配手机号:

/** * 匹配手机号段 13xxx 15xxx 18xxx */private static void matchTel() {String tel = "16550000000";//正则表达式,1开头、358可能出现在第二位、后面9位数字String regex = "[1][358]\\d{9}";//这边是String的matches方法boolean flag = tel.matches(regex);System.out.println(flag);}

2、切割:String类中的spilit()方法

按空格切割:

/** * 按空格切割 */private static void spilitBySpace() {//待切字符串String str = "   zhangsan     lisi        wangwu    ";//按空格切割String regex = "[ ]+";//trim方法,去除首尾的空白字符String[] arr = str.trim().split(regex);for(String s : arr) {System.out.println(s);}}
按点切割:

/** * 按点切割 */private static void spilitBySpace() {//待切字符串String str = "zhangsan.lisi.wangwu";//按点切割String regex = "\\.";//trim方法,去除首尾的空白字符String[] arr = str.trim().split(regex);for(String s : arr) {System.out.println(s);}}
按反斜线切割

/** * 按反斜线切割 */private static void spilitBySpace() {//待切字符串String str = "C:\\a\\b\\c\\a.txt";//按反斜线切割String regex = "\\\\";//trim方法,去除首尾的空白字符String[] arr = str.trim().split(regex);for(String s : arr) {System.out.println(s);}}
按叠词切割

租的概念:从左向右看,每一个小括号括起来的,叫做一个组,编号从1开始。引用组的话用 ‘\’ + 数字标识

/** * 按叠词切割 */private static void spilitBySpace() {//待切字符串String str = "dsabddnjknddnkeenkkmew";//按空格切割String regex = "(.)\\1+";//trim方法,去除首尾的空白字符String[] arr = str.trim().split(regex);for(String s : arr) {System.out.println(s);}}

3、替换:String的replaceAll()方法

将所有数字,替换为*号:

private static void replaceAllTest() {//待切字符串String str = "aaa22222bbbbb22234343fewbbb";//匹配数字String regex = "[0-9]";//trim方法,去除首尾的空白字符String str2 = str.trim().replaceAll(regex, "*");System.out.println(str2);}
将所有连续重复的元素合并

private static void replace() {//待切字符串String str = "aaa22222bbbbb22234343fewbbb";//匹配数字String regex = "(.)\\1+";//trim方法,去除首尾的空白字符String str2 = str.trim().replaceAll(regex, "$1");System.out.println(str2);}

4、获取:将字符串中符合规则的子串取出

操作步骤:

1、将正则表达式封装成对象。(Pattern:没有构造器,通过静态方法compile()方法进行正则表达式编译)

2、将正则对象与要操作的字符串相关联。Pattern对象的matcher()方法

3、关联后,获取正则匹配引擎。Matcher对象

4、通过引擎对符合规则的子串进行操作,比如取出。

查找三个字母的单词,eg:

注:\b为单词边界

private static void find() {String str = "ming tian jiu yao fang jia le";String regex = "\\b[a-z]{3}\\b";//通过静态方法compile()方法进行正则表达式编译Pattern pattern = Pattern.compile(regex);//让正则对象和药作用的字符串相关联,获得匹配引擎Matcher matcher = pattern.matcher(str);//尝试查找与该模式相关的下一个子序列while(matcher.find())System.out.println(matcher.group());}

------- android培训java培训、期待与您交流! ----------


0 0
原创粉丝点击