您的位置:首页 > 职场人生

黑马程序员_正则表达式

2014-03-15 22:03 507 查看
------- 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培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: