---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
正则表达式:一种专门用于操作字符串的规则,通过一些符号来表示,简化对字符串的复杂操作
正则表达式常见操作:匹配、获取、切割、替换
具体功能:
1、匹配,用的是String类的matches(regex)方法;
正则表达式用一些特定的字符来处理代码操作,简化书写过程。
2、正则表达式对字符串的切割功能
(按照多个空格来切割用" +"或者是"[ ]+",按照.来切割字符串时用"\\.“或者是”[.]“表示;使用正则表达式的分组切割时
可以通过()来完成分组,组的出现都有编号,从1开始,想要使用已存在的组来切割字符串,可以通过\n(其中n就是已存在组的编号)的形式来获取组的信息
在正则表达式中(((A)((B))))来表示分组,其中组数由”(“来确定,组号从1开始计数,$n(n表示获取的组号)
3、正则表达式的替代功能
String类的replaceAll(String regx,String newstr)该方法中需要指出正则表达式regx和替代的新的字符newstr,当regx中使用分组时, 可以使用$nn表示分组中的第n组) 如:
String str1 = "sggsdgcdvssjjsdbehbdddddddsbdhewbhd";
String regx1 = "(.)\\1{1,}";
String newStr = "$1";//用叠词的第一个元素代替叠词,其中$表示取分组的第一组
extend(str1, regx1, newStr);
4、正则表达式的获取功能
取出字符串中特定的字符串,其中字串以满足正则表达式的要求
实现步骤:
1、将正则表达式封装成对象 :
Pattern p = Pattern.compile(reg);
2、将正则表达式封装的对象p于被操作的对象字符串像关联:
Matcher m = p.matcher(str);
3、关联后,获取相匹配的关联引擎对象 m
4、按照分组情况,对引擎获得的字串进行操作(该步骤是对字串操作的主要步骤,如将字串取出,利用等)
while(match.find())//字符串匹配
{
System.out.println(match.group());//取出符合特定规则的字串
}
正则表达式一些常用的规则:( 具体参考正则表达式API)
一些特定的字符:(只能校验特定位数的字符串,如果字符串长度过长或者短,校验失败(返回false))
[abc]:表示只能校验一个字符,并且为a或b或c
[a-d]:表示一个字符,并且在a到d之间
[a-zA-Z]:表示一个字符,在a-z或A-Z之间
[0-9]:表示一个数字在0-9之间
[^abc]:表示出了a,b,c的任意字符
[a-r&&[^d-h]]:表示a-r的任一个字符,但要去除d-h之间的字符
预定义的字符串:
.:表示任意字符
\d:表示数字0-9之间的任意数字
\D:表示非数字的字符
\w:表示单词字符[a-zA-Z_0-9]
\W:表示非单词字符
\d?:表示数字出现一次没有出现
(\d)*:表示(数字)出现多次
X+:表示X出现一次或多次
X{n}:表示恰好出现n次
X{n,}:表示X至少出现n次
X{n,m}:表示X出现n到m次
^ 一行文字的开始
$ 一行的结束
\b 一个单词的边界
\B A non-word boundary
\A 输入的开始
\G The end of the previous match
\Z The end of the input but for the final terminator, if any
\z The end of the input
例子
对邮件地址进行校验
package two;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestEmail {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 需要匹配的邮件数组
String[] mails = { "1147314188@qq.com", "Feng@gmail.com", "wawa@abc.xx" };
// 邮件匹配规则
String mailRegEx = "\\w{3,20}@\\w+\\.(com|org|cn|net|gov)";
// 让正则对象和要作用的字符串相关联,获取匹配器对象
Pattern mailPattern = Pattern.compile(mailRegEx);
Matcher matcher = null;
// 遍历邮件数组
for (String mail : mails)
{
if (matcher == null)
{
matcher = mailPattern.matcher(mail);
}
else
{
matcher.reset(mail);
}
String result = mail + (matcher.matches() ? "是" : "不是") + "一个有效的邮件地址!";
System.out.println(result);
}
}
}
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------