代码示例中Java中的正则表达式问题

时间:2011-01-05 14:06:19

标签: java regex

我在表达式中使用正则表达式:example !(FA1_A.i & FA1_M.i)

我有运营商:! ( ) & |

操作数的名称为:[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);

        }

2 个答案:

答案 0 :(得分:4)

您提供的示例中的名称似乎包含您的正则表达式不匹配的数字。

答案 1 :(得分:0)

您必须更改以下代码

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

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