gpt4 book ai didi

java - 在 Java 中重用 Pattern 实例

转载 作者:行者123 更新时间:2023-12-01 14:07:30 25 4
gpt4 key购买 nike

我的问题是,是否可以使用 Pattern.compile( ) 重用已编译的模式与 String.matches( ) 一起使用时?

因为,在文档中它说,

A matches method is defined by this class as a convenience for when a regular expression is used just once. This method compiles an expression and matches an input sequence against it in a single invocation. The statement

boolean b = Pattern.matches("a*b", "aaaaab"); 

is equivalent to the three statements above, though for repeated matches it is less efficient since it does not allow the compiled pattern to be reused.



http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

它只是说当你使用 Pattern.matches 时效率会降低。我对这部分感到困惑:

An invocation of this method of the form str.matches(regex) yields exactly the same result as the expression

Pattern.matches(regex, str)


http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#matches(java.lang.String)

所以我不确定 String.matches用途 Pattern.matches正因为如此,我无法再次重用已编译的模式。我实际上计划将编译模式设置为常量(出于优化目的)

最佳答案

Pattern.matches()方法是静态方法,因此如果您想重用已编译的模式,则不能使用它。编译模式是 Pattern 的一个实例类(class)。 Pattern.matches()每次使用时都会编译您的正则表达式。

您可以通过存储 Pattern 的实例来重用您的编译模式。类,例如:

Pattern pattern = Pattern.compile("^[a-z]+$", Pattern.CASE_INSENSITIVE); // you can store this instance

然后,您可以在每次要使用它时为该模式获取匹配器
Matcher m = pattern.matcher("Testing");

关于java - 在 Java 中重用 Pattern 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23051678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com