2015-03-20 1 views
-1

Я изучаю регулярные выражения. Интересно, есть ли другой способ использовать это в Java без использования Matcher и Pattern? Я уже Google, но я не могу найти ответ. Заранее спасибо!Есть ли другой способ использовать регулярные выражения в Java без использования Pattern и Matcher?

+0

его зависит от того, что вы хотите делать с регулярным выражением! – Baby

+0

В деталях, интересно, есть ли другой способ использования регулярного выражения с лучшей производительностью, чем Matcher и Pattern, что является лучшим способом использования регулярных выражений. Кстати, я использую регулярное выражение для поиска подстроки, соответствующей регулярному выражению. – jenny

+0

в таком случае, да. вы можете манипулировать функцией 'String # replaceAll()' с помощью regex – Baby

ответ

0

Если есть альтернатива, которая может обеспечить полную функциональность Pattern и Matcher, тогда почему нам нужны дублированные API?

В зависимости от того, что вам нужно сделать, Java действительно предоставляют некоторые удобные интерфейсы в классе Струнный для некоторого простого и общего действия, например:

String.matches(regex); 
String.replaceAll(regex, replacement); 
String.replaceFirst(regex, replacement); 
String.split(regex); 
+0

Кстати, «replace (CharSequence, CharSequence)» также реализуется с помощью шаблона в реализации Oracle. (Ну, в общем, он медленнее, но в худшем случае он быстрее, чем наивная реализация) – nhahtdh

+0

@nhahtdh интересный поиск :) хотя это не связано с тем, что спросил OP, это все равно интересно знать :) –

+0

Я не ищет альтернативу, которая может обеспечить полную функциональность Pattern и Matcher. :) Мне просто интересно, есть ли другой способ использовать регулярное выражение, возможно, лучшую производительность. В любом случае, спасибо за ваш ответ :) – jenny

0

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); 
     } 
    } 
} 
+0

Сначала спасибо за ваш ответ. Как насчет его производительности? Это кажется более сложным, чем Pattern и Matcher :) Кстати, я плохо разбираюсь в Javascript. – jenny

+0

@jenny Бьет меня. Вы не спрашивали о лучших способах делать регулярные выражения, просто «другие» способы. – Kenster