Java.util.regex中matcher 和pattern的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java.util.regex中matcher 和pattern的用法相关的知识,希望对你有一定的参考价值。
求 一个 pattern 来match 2种 loop, 一个是 for loop 符合的pattern的形式是for (- ; - ; -) 还一个是while loop 要求的pattern是while (- Boolean operator -) (里面要求是逻辑算子) 想用这个方法 去寻找 有几个 for 和while loop 在一个 文档中 还有一个问题就是 如何去计算 有几个单词 在一个string里面例如"All Rights Reserved" 有3个单词, 只要是没有空格并且连续的字母后面可以跟符号或者是空格 都算是一个单词
这是我的总结:java.lang包中的String类,java.util.regex包中的Pattern,Matcher类中都有matches()方法。
都与正则表达式有关。下面我分别举例:(字符串:"abc",正则表达式: "[a-z]3")
String类的方法:
boolean b = "abc".matches("[a-z]3"
System.out.println(b);
Pattern类中的方法:
boolean b = Pattern.matches("[a-z]3","abc");
System.out.println(b);
Matcher类中的方法:
Pattern p = Pattern.compile("[a-z]3");
Matcher m = p.matcher("acc");
boolean b =m.matches()
System.out.println(b);
得到的结果都为true。 参考技术A for循环可以这样匹配
for\s*\([^;]+;[^;]+;[^\)]+\)
while循环可以这样匹配
while\s*\(.+\)
至于统计单词只要匹配如下的就可以了
\w+(?=[^\w]+)
亲测可行
如有疑问可以到我个人网站留言(见个人资料),将为你一一解决
java 正则表达式
package com.reg.test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 一个Matcher类,java.util.regex.Matcher,java.util.regex.Pattern 存在这两个包里面 * 1)字符串里面的所有的"" 都需要转义 * find() * start() * end() * group() * lookingAt * matches * replaceFirst * replaceAll * appendReplacement * appendTail */ public class Demo01 { public static void main(String[] args) { String content = "12eintet 23 one onete feontet"; Matcher matcher = Pattern.compile("\bone\b").matcher(content); /** * find 一次查到发个,并将指针指向下一个 */ /* while (matcher.find()) { System.out.println(matcher.group()); System.out.println(matcher.start()); // 获取开始索引 System.out.println(matcher.end()); // 获取结束索引 } */ // test1(); // replace(); // append(); // tanlan(); reverseReplace(); } public static void test1() { Pattern pattern = Pattern.compile("foo"); String one = "foocontent..........."; String two = "foo"; Matcher matcher = pattern.matcher(two); System.out.println("从开头能不能查到" + matcher.lookingAt()); //必须是从字符串的头部开始匹配 System.out.println("从中间查" + matcher.matches()); //这个是完全的匹配 } public static void replace() { String s1 = "12onetet"; String s2 = "1cniet23oaeb"; String s3 = "监控中心"; Pattern pattern = Pattern.compile("\d"); Matcher matcher = pattern.matcher(s1); // 替换过后,返回一个新的字符串 String re_content = matcher.replaceFirst(s3); // 替换所有的内容 System.out.println(re_content); String new_re_content = matcher.replaceAll("雷"); System.out.println(new_re_content); } public static void append() { /** * 原字符串操作 逐个查找 */ String REGEX = "a*b"; String INPUT = "aabfooaabfooabfoobkkk"; String REPLACE = "-"; Pattern p = Pattern.compile(REGEX); // 获取 matcher 对象 Matcher m = p.matcher(INPUT); StringBuffer sb = new StringBuffer(); while (m.find()) { // 匹配到最后一个就终止,后面的内容就不追加了 m.appendReplacement(sb, REPLACE); } System.out.println(sb); // 将尾部也加入进去 m.appendTail(sb); System.out.println(sb.toString()); } public static void tanlan() { String str = "这是一个正则表达式字符串查找的示例,正则表达式好厉害呀"; // 编译正则表达式 Pattern pattern = Pattern.compile("正.*?式"); // 开始匹配 Matcher matcher = pattern.matcher(str); // 查找字符串中是否有匹配正则表达式的字符/字符串 while (matcher.find()) { System.out.println(matcher.group()); } } /** * 反向替换 */ public static void reverseReplace() { String time = "2018/11/22"; Matcher matcher = Pattern.compile("(\d{4})/(\d{2})/(\d{2})").matcher(time); String newtime = matcher.replaceAll("$1-$2-$3"); System.out.println(newtime); } }
以上是关于Java.util.regex中matcher 和pattern的用法的主要内容,如果未能解决你的问题,请参考以下文章