Java中^字符的用法

qq_32865025 2017-11-29 11:53:49
java的正则表达式中^在Oracle的官方API中是这样描述的:

也就是说是匹配一行的开头,但是:
当我运行程序:
public static void main(String[] args) {
String regex = "^java";
String input = "java sdfsdfd";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
System.out.println(m.matches());
}

输出为false;
但是在JavaScript中运行却是这样的:

结果为true。
我运行的jdk版本为1.8。
我的问题是:java中的^到底是怎么用的?
...全文
173 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_32865025 2017-11-30
对的,对正则表达式——"^java"而言,是匹配着"java sdfsdfd"字符串中开头的"java",而不是匹配着整个字符串,所以返回的是false。 它匹配的是一个字符串中以"java"开头的位置,而不是以"java"开头的整个的字符串。 而关于JavaScript中为什么返回true就要看到JavaScript中test(String)方法的描述: test()返回值是布尔值,通过该值可以匹配字符串中是否存在于正则表达式相匹配的结果, 如果有匹配内容,返回ture,如果没有匹配内容返回false。 也就是说JavaScript并不是完全匹配字符串,而是字符串存在匹配结果就返回true,这个与java的matches()方法是不同的。 谢谢各位解答疑惑,就此结帖。
  • 打赏
  • 举报
回复
加油,正则表达式这边还是要好好看的
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
逗比123号 2017-11-29
^就是开头,只是你的方法用错了, matches方法表示 字符串与正则表达式完全匹配 而不是部分匹配
  • 打赏
  • 举报
回复
自由自在_Yu 2017-11-29
String regex = "^java"; 只能匹配String input = "java"; String regex = "^java.*"; 可以匹配除“\r\n”之外的任何多个字符
  • 打赏
  • 举报
回复
Pattern.matcher(String regex,CharSequence input)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串 Java代码示例:

Pattern.matches("\\d+","2223");//返回true 
Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到 
Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到 
  • 打赏
  • 举报
回复
public static void main(String[] args) { String regex = "^java.*"; String input = "java sdfsdfd"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(input); System.out.println(m.matches()); } 这样就对了。。。你的用法没错,只是你的正则表达式错了。。你查找的知识java后面不能有东西,,,
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2017-11-29 11:53
社区公告
暂无公告