黑马程序员_正则表达式
来源:互联网 发布:跳转域名 编辑:程序博客网 时间:2024/06/05 03:30
------- android培训、java培训、期待与您交流! ----------
1.正则表达式:符合一定规则的表达式。
2.作用:用于专门操作字符串。
3.特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。
4.好处:可以简化对字符串的复杂操作。
5.((())())四组 从左数 弊端:符号定义越多,正则越长,阅读性越差。
6.具体操作功能:
(1)匹配:Stringmatches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束返回false。
(2)切割:Stringsplit();
(3)替换String replace();
(4)获取subStringindexof();
7.对QQ号码进行校验
String qq = "323234454";
String regex = "[1-9][0-9]{4,14}";
System.out.println( qq.matches(regex));
8.匹配手机号 13xxx 15xxx 18xxx
String tel = "15324234223";
String telReg="1[358]\\d{9}";
System.out.println(tel.matches(telReg));
9. split():切割
splitDemo("zhangsan lisi wangwu" ," +"); //按照多个空格来进行切割。
splitDemo("zhangsan.lisi.wangwu","\\."); //.是特殊符号需要转译
splitDemo("c:\\abc\\a.txt","\\\\");// \\反斜杠需要转译\\\\
splitDemo("erkksdqqqqsdaooowe","(.)\\1+");//按照叠词完成切割。
public static voidsplitDemo(String str ,String reg)
{
String [] arr = str.split(reg);
System.out.println(arr.length);
for(String s : arr)
{
System.out.println(s);
}
}
10.将字符串的数字连续超过5个的换成#。
String s = "256tr43000000087t";
s =s.replaceAll("\\d{5,}","#");
System.out.println(s);
11. 将重叠的字母替换成单个的字母 eg:zzzz--z。$1。
String s ="erkksdqqqqsdaoooowe";
s =s.replaceAll("(.)\\1+","$1");
System.out.println(s);
12.为了可以让规则的结果被重用可以将规则封装成一个组。用()完成。组的出现都有编号。从1开始。想要使用已有的组可以通过\n(n就是组的编号)的形式来获取。
13.总结:匹配(返回真假),替换(返回替换后的),切割(返回规则以外的)。
示例1:将字符串中符合规则的字串取出。
操作步骤
(1)将正则表达式封装成对象
(2)让正则对象和要操作的字符串相关联
(3)关联或,获取正则匹配引擎
(4)通过引擎对符合规则的字串进行操作。比如取出。
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
classRegexDemo
{
public static void main(String[] args)
{
getDemo();
}
public static void getDemo()
{
String str ="ming tian jiu yao fang jia le ,da jia.";
String reg ="\\b[a-z]{4}\\b";// \\b单词边界
//将规则封装成对象
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
System.out.println(m.matches());
while(m.find())
{
System.out.println(m.group());
System.out.println(m.start()+"----"+m.end());
}
}
}
示例2:将下列字符串转成:我要学编程
tring str="我我...我我...我要....要要...学学学...学学...编编编...编程...程程...程...程";
str =str.replaceAll("\\...","");
System.out.println(str);
str =str.replaceAll("(.)\\1+","$1");
System.out.println(str);
示例3:对邮箱地址进行校验
String mail ="ab_qwc12@sina.com";
String reg ="[a-zA-Z0-9_]{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。
//Stringreg="\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配
System.out.println(mail.matches(reg));
示例4:将ip地址进行地址段顺序的排序。
String ip = "192.68.1.254 102.49.23.013 10.10.10.102.2.2.2 8.109.90.30";
ip =ip.replaceAll("(\\d+)","00$1");//每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。
ip =ip.replaceAll("0*(\\d{3})","$1");//每一段保留3位。这样,所有的iP地址都是每一段3位。
System.out.println(ip);
String[] arr= ip.split(" ");//按空格切割
TreeSet<String> ts =new TreeSet<String>();
for(String s : arr)
{
ts.add(s);
}
for(String s :ts)
{
System.out.println(s.replaceAll("0*(\\d+)","$1"));//去掉0(0*0没有或多次)
}
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_ 正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- 黑马程序员_正则表达式
- HDU 1087(最长上升子序列)
- Web应用开发(前端)—Ext Js的MVC(3)
- 12306的问题是技术难题吗
- 毕业后参加半年工作的项目bug调试总结
- HDU 1089(水题)
- 黑马程序员_正则表达式
- Linux守护进程设计规范及python实现
- Opencv学习过程
- yii 模型-视图-控制器 (MVC)
- HDU 1090(水题)
- 【linux系列】vi替换字符串
- 使用Mono.Cecil改变访问级别
- HDU 1091(水题)
- 阴影锥(shadow volume)原理与展望---真实的游戏效果的实现