A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奥特曼爱小怪兽 中级黑马   /  2012-4-24 02:29  /  1768 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.regex.*;
  2. public class RegexTest{
  3.         public static void main(String[] args){
  4.                 String str1 = "RegexText";
  5.                 String str2 = "TextRegex";
  6.                 if(str1.matches("^Regex"))
  7.                         System.out.println("第一个匹配.");
  8.                 if(str2.matches("Regex$"))
  9.                         System.out.println("第二个匹配.");
  10.                 if(str1.matches("^Regex...."))
  11.                         System.out.println("第三个匹配.");               
  12.         }
  13. }
复制代码
这段程序运行结果为什么只有第三个匹配上了。按照正则表达式的规则^Regex是用Regex开头。Regex$是用Regex结尾,第一个和第二个也应该匹配上啊。为何匹配不上呢。

2 个回复

正序浏览
matches函数不是子串匹配,而是完全匹配。
如果想在母串中找字符,可以用indexOf。
如果用matches找字串,应该使用通配符。
主方法代码可以改为:
       String str1 = "RegexText";
                String str2 = "TextRegex";   
                if(str1.matches("^Regex.*"))
                        System.out.println("第一个匹配.");
                if(str2.matches(".*Regex$"))
                        System.out.println("第二个匹配.");
                if(str1.matches("^Regex...."))
                        System.out.println("第三个匹配.");
        }
三个就全部匹配了
回复 使用道具 举报
刚看到你的问题,我差点也被你搞晕,后来试试,想起这不是find 方法,matches 方法是与整个串匹配。加上“.*”就匹配了,如 str1.matches("^Regex.*")。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马