正则表达式主要用于对字符串的处理,主要用于字符串的匹配,分割,替换
规则:(我自己总结的)
1:按照括号
()表示分组,(.)\1意思是第二个字符与第一个字符一致
[ ] 表示可选,[134]意思1,3,4中任意一个 [a-z]意思是a,b....z中的任意一个
{ }表示边界 {4}上下边界都是4,必须四个字符,{4,}至少4个,{4,6} 4到6个,与前边的组合使用比如:
[0-9]{4,8}
表示4到8个数
2:按照+ * ?
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
预定义字符类
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
\b | 单词边界 |
\B | 非单词边界 |
\A | 输入的开头 |
\G | 上一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
\z | 输入的结尾 |
以下代码是对正则表达式的运用
import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { /* * 1 * 字符匹配 */ System.out.println(testMatches("12345323", "1\\d{4,14}")); System.out.println(testMatches("22345323", "1\\d{4,14}")); System.out.println(testMatches("22345323", "[125]\\d{4,14}")); /* * 2 * 字符截取 */ String str = "c:\\java\\test"; String[] strs = testSprite(str, "\\\\");//\\借钱去,\是转义字符,要转义一个\,需要\\,两个\\\\ for (String newstr : strs) { System.out.println(newstr); } str = "c.java.test"; strs = testSprite(str, "\\.");//。截取。 .代表所有字符 for (String newstr : strs) { System.out.println(newstr); } str = "c java test 22";//空格截取,可能多个空格,所以" +" strs = testSprite(str, " +"); for (String newstr : strs) { System.out.println(newstr); } str = "dwadadw222a2xxaddawddwadq3aseaa";//叠词截取()分组,1表示第一组,需要转义,所以\1,(.)的意思是第二个字符跟第一个字符一致 strs = testSprite(str, "(.)\\1+"); for (String newstr : strs) { System.out.println(newstr); } /* * 3 * 字符替换 */ str="I a2m haa23pp55y"; System.out.println(testreplaceAll(str, "\\d", "")); str="A beeeautttiful ggirll that I wwant ttoo bee myy ggiiirl frrieeend may coome too minee unniverssity"; System.out.println(testreplaceAll(str, "(.)\\1+", "$1")); /* * 获取能匹配的字符 */ List<String> list=testFind("After two days , ACM compition will be go","\\b[a-zA-z]{3}\\b");//必须是三个字符,前后两边是单词字符 Iterator it=list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } //Matcher是真正的强大 public static LinkedList<String> testFind(String str,String regex) { LinkedList<String> list=new LinkedList<String>(); //获取Pattern Pattern p= Pattern.compile(regex); //获取Matcher Matcher m=p.matcher(str); while(m.find()) { list.add(m.group()); } return list; } public static boolean testMatches(String str, String regex) { return str.matches(regex); } public static String[] testSprite(String str, String regex) { return str.split(regex); } public static String testreplaceAll(String str, String regex, String replacement) { return str.replaceAll(regex, replacement); } }
作者:qzshiyongjie123 发表于2013-5-9 22:55:43 原文链接
阅读:55 评论:0 查看评论