2013-05-04 2 views
2

Мне нужно определить несколько шаблонов для компиляции с помощью String, и после запуска он должен дать мне любую вещь в строке, которая имеет тот же формат в моем шаблоне. вот коды:Как скомпилировать различные шаблоны со строкой?

 String line = "This order was places for QT 30.00$ !OK ? "; 

    Pattern[] patterns = new Pattern[]{ 
     Pattern.compile("\\d+[.,]\\d+.[$] ", Pattern.CASE_INSENSITIVE), 
     Pattern.compile("\\d:\\d\\d",Pattern.CASE_INSENSITIVE | Pattern.MULTILINE)  
     };  // Create a Pattern object 

    // Now create matcher object. 
     for (Pattern scriptPattern : patterns){ 
      Matcher m = scriptPattern.matcher(line); 
System.out.println(m.group()); 
     }  } 
+0

Где несколько шаблонов? – Thilo

+0

Несколько шаблонов, как вам нужно, чтобы ваша строка соответствовала нескольким строкам регулярных выражений? – ayushman999

ответ

0

Является ли это то, что вы ищете

private static Pattern[] patterns = new Pattern[]{ 
    Pattern.compile("Your pattern ", Pattern.CASE_INSENSITIVE), 
    Pattern.compile("your pattern",Pattern.CASE_INSENSITIVE | Pattern.MULTILINE)  
    }; 

Вы можете использовать это, чтобы пройти через шаблоны и соответствовать им

for (Pattern scriptPattern : patterns){ 
        Matcher m = scriptPattern.matcher(line) 
        while (m.find()) { 
       String d = m.group(); 
       if(d != null) { 
        System.out.print(d); 

       } 

      } 
    } 
+0

i get error with (private static) , а в консоли я получаю ошибку Exception ::: Исключение в потоке «main» java.lang.Error: Неразрешенная проблема компиляции: \t Метод компиляции (String) в типе Шаблон не применим для аргументов (Образец []) \t в PM.main (PM.java:17) – Freeman

+0

Дорогой шаблон Thilo - это String pattern = "(\\ d + [.,] \\ d +. [ . $]) * (\\ д \\ д \\ д) "; – Freeman

+0

Уважаемый ayushman999, можете ли вы рассказать мне, что это за значение? – Freeman

0

Используя свой вопрос перед редактирование здесь несколько хитростей, чтобы заставить его работать:

public static void main(String[] args) { 
    // String to be scanned to find the pattern. 
    String line = "This order was places for QT 30.00$ !OK ? 2:37 "; 

    String pattern = "(\\d+[.,]\\d+.[$])(.*)(\\d:\\d\\d)"; 
    // Create a Pattern object 
    Pattern r = Pattern.compile(pattern); 

    // Now create matcher object. 
    Matcher m = r.matcher(line); 
    if (m.find()) { 
     System.out.println("Found value: " + m.group(1) + " with time: " + m.group(3)); 
    } 
} 

Выход:

Found value: 30.00$ with time: 2:37 
+0

дорогой Джереми Унрух но что, если я не сделать для конкретной группы (место в строке), потому что я хочу, чтобы кто-нибудь, когда получал этот тип значения, вытаскивал их не в определенном месте. – Freeman

+0

Я не уверен, что я следую. Вы оригинал вопроса был основан на образце, который вы предоставили, так что вы поняли, что это ваша проблема. Вы просто хотите посмотреть, является ли строка шаблоном типа вообще и не заботится о том, чтобы вытащить определенные элементы? –

+0

дорогой Джереми Unruh, я ищу любой элемент в строке, которая имеет тот же формат шаблона – Freeman

Смежные вопросы