2016-11-21 1 views
-1

Вот мой код, я просмотрел библиотеку, в которой говорится, что она может принимать строку. Не знаю, в чем проблема.Java Regex: не могу назначить переменную pattern.compile()

String currentText = ""; 
String regex = ""; 

public void prepRegex() { 
     currentText = textField.getText(); 
     regex = regexField.getText(); 
} 

public void checkFunc() { 
    prepRegex(); 

    try { 
     Pattern regex = Pattern.compile(regex); // This doesn't work <--- 
     Matcher regexMatcher = regex.matcher(currentText); 
     while (regexMatcher.find()) { 
      for (int i = 1; i <= regexMatcher.groupCount(); i++) { 
       // matched text: regexMatcher.group(i) 
       // match start: regexMatcher.start(i) 
       // match end: regexMatcher.end(i) 
      } 
     } 
    } catch (PatternSyntaxException ex) { 
     // Syntax error in the regular expression 
    } 
} 
+0

Синтаксис Regex довольно конкретный, а не любая строка, ваша строка не должна соответствовать ... можете ли вы обновить свой вопрос с помощью строки, вызывающей ошибку .... – Adam

+0

@AndyTurner Конечно! Спасибо, сделайте это ответом, если вы хотите, чтобы я это проверил! Благодарю. – James

ответ

3

Вы имеете в виду переменную в своем собственном инициализаторе:

Pattern regex = Pattern.compile(regex); 
     ^This    ^is the same symbol as this 

Если вы хотите обратиться к переменной экземпляра (выше, String regex = "";), квалифицировать его this:

Pattern regex = Pattern.compile(this.regex); 
Смежные вопросы