当前位置: 首页 > 面试题库 >

Java中的regex是否默认使用^和$字符锚定?

郎弘业
2023-03-14
问题内容

根据我对正则表达式的理解,字符串“ 00 ###”必须与“ [0-9]”匹配,但不能与“ ^ [0-9] $”匹配。但这不适用于Java regexp。

在对此问题进行了一些调查之后,我发现了以下信息(http://www.wellho.net/solutions/java-regular-
expressions-in-java.html
):

似乎Java正则表达式默认同时带有^和$字符。

我们可以确定所有JDK版本都适用吗?是否可以关闭此模式(即禁用带有^和$的默认锚定)?


问题答案:

如您所链接的文章所述,它取决于您调用的函数。如果要默认添加^和$,请使用String#matchesMatcher#matches。如果您不想这样做,请改用Matcher#find方法。

import java.util.regex.*;

public class Example
{
    public static void main(String[] args)
    {
        System.out.println("Matches: " + "abc".matches("a+"));

        Matcher matcher = Pattern.compile("a+").matcher("abc");
        System.out.println("Find: " + matcher.find());
    }
}

输出:

Matches: false
Find: true


 类似资料:
  • 问题内容: 如果我写这样的话 哪种类型带有“ 18”?是 int 还是 byte ?还是还没有类型? 它不能是int,因为这样是正确的: 这是不正确的: 编辑:我想我在工作分配转换的规范中找到了正确的部分: 常量的编译时缩小意味着代码如下: 字节theAnswer = 42; 被允许。如果不进行缩小,则整数文字42具有int类型的事实意味着将需要强制转换为字节: 字节theAnswer =(字节)

  • 本文向大家介绍Java Regex中的Regex元字符,包括了Java Regex中的Regex元字符的使用技巧和注意事项,需要的朋友参考一下 元字符是在Java正则表达式中具有特殊含义的字符。 Java正则表达式中支持以下元字符。

  • 问题内容: 我有一个带有BLOB字段的表。 该表的字符集为Latin1。 我连接到数据库和“ SET CHARACTER SET utf8”。 然后,我将二进制数据保存到该字段中。 然后,我检索数据,这不是我保存的(损坏的)数据。 编码: 问题答案: 好答案@mvp! 但是,当我的Web应用程序为UTF-8且数据库编码为时,我 必须 设置和。 使用时,出现了BLOB的问题。 但是当我使用它时,它起

  • Windows中使用的默认unicode字符编码是什么?特别是在Windows编程中(Win32和WinRT)。当我在WinAPI中编程时,“char”映射到1字节字符存储,“wchar_t”映射到2字节字符存储。如果UTF-16用4个字节编码所有超过65536的字符,那么Windows如何将这些字符映射为“wchar_t”数据类型?我知道我的问题不够清楚,但我希望你能理解我的一些担忧。非常感谢!

  • 问题内容: 我正在用Java编程 我的代码为: 在api中指定,如果不指定字符编码,它将采用默认的平台字符编码。 “默认平台字符编码”是什么意思? 它是Java编码还是OS编码? 如果这意味着操作系统编码,如何检查Windows和Linux的默认字符编码?无论如何,我们可以使用命令行获取默认的字符编码吗? 问题答案: 这表示您正在运行的JVM的默认字符编码, 要检查默认编码,您可以执行以下操作:

  • 问题内容: 问题:转弯 进入 Perl支持可以在替换字符串中使用的“ \ L”操作。 模式类不支持此操作: 此类不支持的Perl构造:[…]预处理操作\ l \ u,\ L和\ U。 https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html 问题答案: 您无法在Java正则表达式中执行此操作。您必须使用和手动进行