作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
根据我对正则表达式的理解,字符串“00###”必须与“[0-9]”匹配,但不能与“^[0-9]$”匹配。但它不适用于 Java 正则表达式。
在对此问题进行一些调查后,我发现了以下信息 (http://www.wellho.net/solutions/java-regular-expressions-in-java.html):
It might appear that Java regular expressions are default anchored with both a ^ and $ character.
我们能否确定所有版本的 JDK 都是如此?并且可以关闭此模式(即使用 ^ 和 $ 禁用默认锚定)?
最佳答案
正如您链接到的文章所解释的,这取决于您调用的函数。如果要默认添加 ^ 和 $,请使用 String#matches
或 Matcher#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
关于java - Java 中的正则表达式是否默认使用 ^ 和 $ 字符锚定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894624/
我正在实现谱聚类算法,我必须确保矩阵(拉普拉斯矩阵)是半正定矩阵。 检查矩阵是否为正定矩阵 (PD) 就足够了,因为可以在特征值中看到“半”部分。矩阵非常大(nxn,其中 n 是几千的数量级)所以特征
我是一名优秀的程序员,十分优秀!