我已经开始在我的Java程序中使用
.match(Regex)
方法,不过目前我只是使用一个字符串(String regexString = new String("[^a-zA-Z0-9][^a-zA-Z0-9]*");
)作为示例。我知道我可以使用实际的正则表达式(Regex pattern = new Regex() & the Pattern class
),然后以某种方式进行编译。
在Java中,使用Regex作为一个类而不仅仅是一个字符串是否有优势呢?我非常习惯Bash脚本,在那里正则表达式只是“最宽松意义上的字符串”,并且没有分离的类的必要/需要,因此我很难看出这里有何区别。
new String("...");
。只需使用"..."
:String regexString = ".*";
。显式创建新的String
对象是不必要且低效的。 - Jesper".*"
,那么就会创建一个String
对象。但是如果你使用new String(".*")
,就会创建第二个String
对象,这个对象复制了字面字符串的内容,这是不必要的。在Java中,字符串是不可变的。Java有一个字符串池机制,所以如果你多次使用相同的字符串字面量,将只有一个被共享的String
对象。 - Jesper