java常用的正则表达式及pattern与matcher -------------------------------------------------------------------------------- 2009-05-27 00:04:28 标签: [推送到技术圈] (0) 常用的正则表达式: 解释: ^ 匹配输入字符串的开始位置。 $ 匹配输入字符串的结束位置。 * 匹配前面的子表达式零次或多次。 + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 ? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。 {n} n 是一个非负整数,匹配确定的n 次。 {n,} n 是一个非负整数,至少匹配n 次。 {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。 // :代表 "/" 本身 /^ :匹配 ^ 符号本身 /$ :匹配 $ 符号本身 /. :匹配小数点(.)本身 /d :匹配一个数字字符。等价于 [0-9]。 /D :即与/d相反 /w :任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 /W :即与/w相反 /s :包括空格、制表符、换页符等空白字符的其中任意一个 /S :即与/s相反 . :小数点可以匹配除了换行符(/n)以外的任意一个字符 [ab5@] :匹配 "a" 或 "b" 或 "5" 或 "@" [^abc] :匹配 "a","b","c" 之外的任意一个字符 [f-k] :匹配 "f"~"k" 之间的任意一个字母 [^A-F0-3] :匹配 "A"~"F","0"~"3" 之外的任意一个字符数字方面: 只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^/d{n}$"(相当于上面的 ^[0-9]{n}$ )。只能输入至少n位的数字:"^/d{n,}$"。只能输入m~n位的数字:。"^/d{m,n}$" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。字符方面: 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。只能输入汉字:"^[/u4e00-/u9fa5]{0,}$" (1) ava.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包含两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表示模式。 Matcher 一个Matcher对象是一个状况机器,它根据Pattern对象做为匹配模式对字符串展开匹配检讨。 (2) Pattern的方法如下: static Pattern compile(String regex) 将给定的正则表达式编译并赋予给Pattern类 Matcher方式如下: int end() 返回当前匹配的子串的最后一个字符在原目标字符串中的索引地位。 boolean find() 尝试在目标字符串里查找下一个匹配子串。 String group() 返回当前查找而获得的与组匹配的所有子串内容 String group(int group) 返回当前查找而获得的与指定的组匹配的子串内容 boolean lookingAt() 检测目标字符串是否以匹配的子串起始。 boolean matches() 尝试对全部目标字符展开匹配检测,也就是只有全部目标字符串完整匹配时才返回真值。 String replaceAll(String replacement) 将目标字符串里与既有模式相匹配的子串全体替换为指定的字符串。 String replaceFirst(String replacement) 将目的字符串里第一个与既有模式相匹配的子串调换为指定的字符串。 Matcher reset() 重设该Matcher对象。 int start() 返回当前查找所获子串的开端字符在原目标字符串中的位置。 (3) 3.1 "abc".matches("...") ->true "aaa".matches("a*") ->true "aaa".matches("a+") ->true "aaa".matches("a?") ->false "a".matches("[abc]") ->true "a".matches("[^abc]") ->false "A".matches("[a-z]|[A-Z]") ->true "a_8".matches("//w{3}") ->true "192.168.10.191".matches("//d{1,3}//.//d{1,3}//.//d{1,3}//.//d{1,3}") -->true 3.2 以下全部显示: a----a "a7856a".replaceAll("//d", "-") "a7856a".replaceAll("[0-9]", "-") Pattern p = Pattern.compile("//d"); Matcher m = p.matcher("a7856a"); p(m.replaceAll("-")); 3.3 // 这里的p代表system.out.println(); Pattern p3 = Pattern.compile("//d{3,5}"); String s = "123-34345-234-00"; Matcher m3 = p3.matcher(s); p(m3.matches()); m3.reset();//重置匹配器 p(m3.find());//找一个子串 p(m3.start() + "-" + m3.end()); p(m3.find()); p(m3.start() + "-" + m3.end()); p(m3.find()); p(m3.start() + "-" + m3.end()); p(m3.find());//false p(m3.lookingAt()); 输出: false true 0-3 true 4-9 true 10-13 false true 3.4 Pattern p4 = Pattern.compile("java",Pattern.CASE_INSENSITIVE); //大小写不敏感 Matcher m4 = p4.matcher("java Java JAVa JaVa IloveJAVA you hateJava dsfsdafsadfa"); p(m4.replaceAll("JAVA")); 输出: JAVA JAVA JAVA JAVA IloveJAVA you hateJAVA dsfsdafsadfa 3.5 (),可以用于分组. Pattern p5 = Pattern.compile("(//d{3,5})([a-z]{2})"); String s5 = "123aa-34345bb-234cc-00"; Matcher m5 = p5.matcher(s5); while(m5.find()) { // p(m5.group()); // p(m5.group(1)); p(m5.group(2)); } 第一个输出: 123aa 34345bb 234cc 第二个输出:(获取第一个分组) 123 34345 234 第三个输出: aa bb cc 本文出自 51CTO.COM技术博客
java常用的正则表达式及pattern与matcher
最新推荐文章于 2022-05-02 08:34:33 发布