Я изучаю регулярные выражения. Интересно, есть ли другой способ использовать это в Java без использования Matcher и Pattern? Я уже Google, но я не могу найти ответ. Заранее спасибо!Есть ли другой способ использовать регулярные выражения в Java без использования Pattern и Matcher?
Есть ли другой способ использовать регулярные выражения в Java без использования Pattern и Matcher?
ответ
Если есть альтернатива, которая может обеспечить полную функциональность Pattern и Matcher, тогда почему нам нужны дублированные API?
В зависимости от того, что вам нужно сделать, Java действительно предоставляют некоторые удобные интерфейсы в классе Струнный для некоторого простого и общего действия, например:
String.matches(regex);
String.replaceAll(regex, replacement);
String.replaceFirst(regex, replacement);
String.split(regex);
Кстати, «replace (CharSequence, CharSequence)» также реализуется с помощью шаблона в реализации Oracle. (Ну, в общем, он медленнее, но в худшем случае он быстрее, чем наивная реализация) – nhahtdh
@nhahtdh интересный поиск :) хотя это не связано с тем, что спросил OP, это все равно интересно знать :) –
Я не ищет альтернативу, которая может обеспечить полную функциональность Pattern и Matcher. :) Мне просто интересно, есть ли другой способ использовать регулярное выражение, возможно, лучшую производительность. В любом случае, спасибо за ваш ответ :) – jenny
Java SE 7, а затем включает в себя built-in Javascript interpreter, который можно назвать , Javascript содержит built-in regular expressions. Вы можете использовать механизм Javascript RE вместо функций Java.
import java.util.ArrayList;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class RESample {
private final static String script =
"var pattern = /;/;\n" +
"var names = input;\n" +
"var nameList = names.split(pattern);\n" +
"nameList.forEach(function(name) { output.add(name);});";
public static void main(String[] args) throws ScriptException {
String input = "Tom;Dick;Harry";
ArrayList<String> output = new ArrayList<String>();
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.put("input", input);
engine.put("output", output);
engine.eval(script);
for (String name : output) {
System.out.println(name);
}
}
}
его зависит от того, что вы хотите делать с регулярным выражением! – Baby
В деталях, интересно, есть ли другой способ использования регулярного выражения с лучшей производительностью, чем Matcher и Pattern, что является лучшим способом использования регулярных выражений. Кстати, я использую регулярное выражение для поиска подстроки, соответствующей регулярному выражению. – jenny
в таком случае, да. вы можете манипулировать функцией 'String # replaceAll()' с помощью regex – Baby