正则表达式小总结

来源:互联网 发布:什么是大数据挖掘 编辑:程序博客网 时间:2024/06/05 01:20

正则表达式主要是两点

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);
}
}
}

0 0
原创粉丝点击