JAVA正则表达式,matcher.find()和 matcher.matches()的区别


JAVA正则表达式,matcher.find()和 matcher.matches()的区别

1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。

matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。

 

2.Pattern pattern= Pattern.compile(".*?,(.*)");

    Matcher matcher = pattern.matcher(result);

  if (matcher.find()) {
   return matcher.group(1);
  }

 

3.详解:

matches
public static boolean matches(String regex,  CharSequence input)

编译给定正则表达式并尝试将给定输入与其匹配。 
调用此便捷方法的形式 
Pattern.matches(regex, input);
Pattern.compile(regex).matcher(input).matches() ;
如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。
参数:
regex - 要编译的表达式
input - 要匹配的字符序列 
抛出: 
PatternSyntaxException - 如果表达式的语法无效

find
public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。 
此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。 
如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。  

matcher.start() 返回匹配到的子字符串在字符串中的索引位置.
matcher.end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
matcher.group()返回匹配到的子字符串
返回:
当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。


4.部分JAVA正则表达式实例

   ①字符匹配
   Pattern p = Pattern.compile(expression); // 正则表达式
   Matcher m = p.matcher(str); // 操作的字符串
   boolean b = m.matches(); //返回是否匹配的结果
   System.out.println(b);

   Pattern p = Pattern.compile(expression); // 正则表达式
   Matcher m = p.matcher(str); // 操作的字符串
   boolean b = m. lookingAt (); //返回是否匹配的结果
   System.out.println(b);

   Pattern p = Pattern.compile(expression); // 正则表达式
   Matcher m = p.matcher(str); // 操作的字符串
   boolean b = m..find (); //返回是否匹配的结果
   System.out.println(b);


②分割字符串
Pattern pattern = Pattern.compile(expression); //正则表达式
                     String[] strs = pattern.split(str); //操作字符串 得到返回的字符串数组

③替换字符串
   Pattern p = Pattern.compile(expression); // 正则表达式
   Matcher m = p.matcher(text); // 操作的字符串
   String s = m.replaceAll(str); //替换后的字符串

④查找替换指定字符串
Pattern p = Pattern.compile(expression); // 正则表达式
   Matcher m = p.matcher(text); // 操作的字符串
   StringBuffer sb = new StringBuffer();
   int i = 0;
   while (m.find()) {
    m.appendReplacement(sb, str);
    i++;    //字符串出现次数
   }
   m.appendTail(sb);//从截取点将后面的字符串接上
String s = sb.toString();
⑤查找输出字符串
Pattern p = Pattern.compile(expression); // 正则表达式
   Matcher m = p.matcher(text); // 操作的字符串
   while (m.find()) {
matcher.start() ;
matcher.end();
matcher.group(1);
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matcher.matchesJavaMatcher类中有什么区别matcher.find()和matcher.matches()是JavaMatcher类的两个方法,用于在一个字符串中进行正则表达式的匹配操作。它们之间有一些区别: - matcher.find()方法是用来查找字符串中是否存在与正则表达式匹配的子串。它会从字符串的起始位置开始查找,一旦找到匹配的子串,就会返回true,并且可以通过matcher.group()方法获取匹配的子串。如果没有找到匹配的子串,则返回false。matcher.find()方法可以进行多次调用,每次调用都会从上一次匹配结束的位置开始查找下一个匹配的子串。 - matcher.matches()方法是用来判断整个字符串是否与正则表达式完全匹配。它会尝试将整个字符串与正则表达式进行匹配,如果字符串与正则表达式完全匹配,则返回true,否则返回false。与matcher.find()方法不同,matcher.matches()只会进行一次匹配,而不会找到所有的匹配子串。 举个例子,假设我们有一个字符串"abcccdefg",我们想要找到所有匹配正则表达式"c "的子串。如果我们使用matcher.find()方法,我们需要在一个while循环中连续调用matcher.find(),每次都可以找到一个匹配的子串,直到找不到匹配的子串为止。而如果我们使用matcher.matches()方法,它会尝试将整个字符串与正则表达式进行匹配,只有当整个字符串与正则表达式完全匹配时,才会返回true。因此,在这个例子中,matcher.matches()方法将返回false,因为整个字符串并不完全匹配正则表达式"c "。 总结来说,matcher.find()方法用于查找字符串中是否存在与正则表达式匹配的子串,并可以找到所有的匹配子串,而matcher.matches()方法用于判断整个字符串是否与正则表达式完全匹配。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [matcher.find(); matcher.matches(); 两个方法有什么区别](https://blog.csdn.net/abckingaa/article/details/131676436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Matcher类find方法简记](https://blog.csdn.net/weixin_50893467/article/details/130367726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值