Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Springbean编译所有正则表达式_Java_Regex - Fatal编程技术网

Java Springbean编译所有正则表达式

Java Springbean编译所有正则表达式,java,regex,Java,Regex,如果编译正则表达式是最耗时的部分,那么使用Springbean在bean初始化期间编译项目中的所有正则表达式,并将其作为编译后的正则表达式提供给任何需要后续匹配目标字符串的类,这是一个好主意吗?我从未见过这样的事情——大多数时候,匹配模式的类也会同时进行编译。每次完成模式匹配时编译是不是会花费更多的时间?如果要多次使用正则表达式,最好只编译一次 正则表达式编译变得越复杂,成本就越高,大多数情况下,我们在没有意识到的情况下一遍又一遍地编译。举个例子,这些来自的方便方法总是在幕后完成编译过程: 模式

如果编译正则表达式是最耗时的部分,那么使用Springbean在bean初始化期间编译项目中的所有正则表达式,并将其作为编译后的正则表达式提供给任何需要后续匹配目标字符串的类,这是一个好主意吗?我从未见过这样的事情——大多数时候,匹配模式的类也会同时进行编译。每次完成模式匹配时编译是不是会花费更多的时间?

如果要多次使用正则表达式,最好只编译一次

正则表达式编译变得越复杂,成本就越高,大多数情况下,我们在没有意识到的情况下一遍又一遍地编译。举个例子,这些来自的方便方法总是在幕后完成编译过程:

模式匹配 String.matches String.replaceAll String.replaceFirst String.split
因此,您应该始终记住调用的方便方法,并一次性编译多用途正则表达式;无论是在启动时还是第一次使用时。

如果模式需要一些动态文本怎么办?当然,但大多数情况下都是静态文本/模式,我想将静态文本/模式编译移到Springbean中,如果您有动态模式,那就别管它们。我想我从未见过有人这样做,将是对正则表达式进行分组的一个非常特殊的用例。如果您有那么多,并且在初始化过程中加载它们,那么应用程序将需要更长的时间启动,这可能会让用户感到烦恼。我以前使用过大型Swing应用程序,在那里我们使初始UI加载速度加快,然后启动一个后台线程开始加载所有类,否则当用户打开对话框时UI可能会冻结1-2秒,因为它必须等待大量类加载。但我怀疑你需要为模式加载背景。