Распознаватель шаблонов в Java - PullRequest
0 голосов
/ 04 декабря 2010

Я пишу программу переименования файлов в Java.Проблема заключается в том, что при вводе шаблона ввода.

Когда ввод такой сложный, как (] [) , в этом случае я получаю ошибки java.util.regex.Pattern class ..

Основная проблема написания этого кода заключается в том, что шаблон ввода и шаблон замены являются пользовательским вводом.Как я могу обрабатывать такие символы во время обработки ???

Ответы [ 3 ]

3 голосов
/ 04 декабря 2010

Это пример того, как можно избежать специальных символов RegExp в исходном коде Java.Я считаю, что вам придется экранировать специальные символы вручную, если шаблон вводится пользователем.


package edu.mew.test.regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExpPatternTester {

  public static void main(String[] args) {
    String s1 = "filename()[].txt";
    Pattern p = Pattern.compile(".*\\(\\)\\[\\].*");
    Matcher m1 = p.matcher(s1);
    System.out.println(m1.matches());
    String s2 = "filename.txt";
    Matcher m2 = p.matcher(s2);
    System.out.println(m2.matches());
  }

}


2 голосов
/ 04 декабря 2010

Вы можете экранировать специальные символы в регулярном выражении, используя Pattern.quote .

0 голосов
/ 04 декабря 2010

Это зарезервированные символы в регулярном выражении вам нужно убежать от них с двумя обратными слешами

//]

Слишком большое влияние Microsoft, о котором я говорил

обратная косая черта \\]

http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

...