2011-01-05 3 views
0

У меня есть работа с регулярным выражением в моих выражениях: пример !(FA1_A.i & FA1_M.i)Regex проблема в Java в образце кода

У меня есть операторы: ! () & |

Операнды имеют имена: [a-zA-Z_]*\.[a-zA-Z_]

я написал Java-код, чтобы разделить на токенах, но он не разбивается на операторы и операнды. Это должно быть!, (, FA1_A.i, &, FA1_m.i,). Может ли кто-нибудь сказать мне, что не так?

String stringOpеrator = "([!|&()])"; 
String stringOperand = "(([a-zA-Z_]*)\\.([a-zA-Z_]*))"; 
String reg=stringOpеrator+"|"+stringOperand; 
Pattern pattern = Pattern.compile(reg); 

Matcher m = pattern.matcher(expression); 
// System.out.println("func: " + function + " item: " + item); 
while (m.find()) { 
    int a=m.start(); 
    int b=m.end(); 
    String test=expression.substring(m.start(), m.end()); 
    String g=test; 
    tokens.add(new Token(expression.substring(m.start() , m.end()))); 


      //m = pattern.matcher(expression); 

     } 
+3

Что именно не работает? Что вы ожидаете от этого? Что происходит вместо этого? Просто говоря: «Это не работает» не совсем полезно ... – Joey

+0

«Đμ» предполагает, что у вас есть проблема с кодировкой, которая может повлиять на работу ваших регулярных выражений. – OrangeDog

ответ

4

Имена в приведенном примере, как представляется, содержат числа, которые не соответствуют вашему регулярному выражению.

0

Вы должны изменить следующий код

String stringOperand = "(([a-zA-Z_]*)\\.([a-zA-Z_]*))"; 

К

String stringOperand = "(([a-zA-Z_0-9]*)\\.([a-zA-Z_0-9]*))"; 
Смежные вопросы