正则表达式小总结

正则表达式主要是两点

1 符号

2 规则

熟练了以后可以发挥巨大的威力 有时候感觉就像一把沾了毒的匕首 虽然小 但是非常可怕


分为:匹配 切割 替换 获取 分组来记忆这两点

说一下一些思路上的要点:

1 正则表达式是字符串 (总在“”内)

2 一个方括号代表一个位置 方括号里面的内容代表这个位置允许出现的情况

3 方括号里面也可以有方括号 这个规则与&&连用 可以表示交集 当然 ||符号被啥也没有替代了(也就是说 只要挨着写就是||的意思 意思是并集)

4 数字 单词字符等有预定义字符类 不用写一大串就能表示相同的意思

5 切割的规则是按照xx来切割 而这个xx就是正则表达式要表达的内容

6 默认一套完整的最小有意义的单元为一个组 编号从1开始 通过()可以自定义组生效的范围 通过\+数字可以获取对应组的规则并重复使用

7 取和切是反向操作 取很麻烦 要先创建对象(规则对象) 再通过match()方法将规则跟目标字符串关联获得特定的匹配器 最后调用匹配器中的matches()方法得到结果

8 熟练最重要 仅仅记住是完全不够的


例子:

/*
需求:
按照ip地址段的顺序排序
192.68.1.254
102.49.23.13
10.10.10.10
2.2.2.2
8.109.90.30


*/


import java.util.regex.*;
import java.util.*;


class RegexTest2  //这么经典 这么综合 我只想说!背也要背住!
{
public static void main(String[] args) 
{
String ip = "192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30";


String str1 = ip.replaceAll("(\\d+)","00$1");
String str2 = str1.replaceAll("0*(\\d{3})","$1");


String[] arr = str2.split(" ");


TreeSet<String> ts = new TreeSet<String>();


for (String s : arr )
{
ts.add(s);
}


for (String s : ts )
{
sop(s.replaceAll("0*(\\d+)","$1"));
}
}

public static void printchararr(char[] arr)
{
for (int i = 0; i<arr.length; i++)
{
sop(arr[i]);
}
}


public static void sop(Object obj)
{
System.out.println(obj);
}


public static void printstringarr(String[] arr)
{
for (String s : arr)
{
sop(s);
}
}
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/moriartywokao/article/details/46788705
文章标签: 学习总结
个人分类: 学习总结
上一篇实现菜单程序的一些关键的地方和思路总结
想对作者说点什么? 我来说一句

经典的正则表达式总结文档

2009年07月26日 317KB 下载

perl正则表达式学习手册

2012年01月05日 81KB 下载

C# 中的常用正则表达式总结_

2008年12月16日 21KB 下载

C# 中正则表达式总结

2009年08月22日 67KB 下载

C#中的常用正则表达式总结

2009年11月06日 46KB 下载

没有更多推荐了,返回首页

关闭
关闭