Проблема регулярных выражений в Java в примере кода - PullRequest
0 голосов
/ 05 января 2011

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

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

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

Iнаписал 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);

        }

Ответы [ 2 ]

4 голосов
/ 05 января 2011

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

0 голосов
/ 05 января 2011

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

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

TO

String stringOperand = "(([a-zA-Z_0-9]*)\\.([a-zA-Z_0-9]*))"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...