使用Apache RE,Java正则表达式不匹配

时间:2015-02-22 14:03:56

标签: java regex apache

我有这个正则表达式字符串:

^[a-zA-Z0-9\t\s\n\r!$()*,-./:;=?@`][{}_~|]+$

对于以下内容,此RE应返回true:

!$()*,-./:;=?@`][{}_~|

我正在使用Apache的RE并在运行匹配功能时得到错误 我认为我的正则表达式缺少某些东西,可能是处理特殊字符 问题是,我的表达有什么问题?这是我的RE匹配功能:

public static String runRegularExpression(String string, String regularExpression, int parenthesis)
{
    String result = null;

    try
    {
        RE reCmd = new RE(regularExpression);

        if (reCmd.match(string))
        {
            result = reCmd.getParen(parenthesis);
        }
    }
    catch (Exception re)
    {
    }

    return result;
}

1 个答案:

答案 0 :(得分:1)

  1. 你的正则表达式不能在字符类中间使用未转义的连字符。
  2. 如果您已经\s,则无需匹配\n\t,因为\s匹配包含空格,制表符和换行符的所有空格。< / LI>
  3. [a-zA-Z0-9_]可缩短为\w
  4. 反斜杠需要双重转义。
  5. 试试这个正则表达式:

    ^[\\w\\s\\r!$()*,./:;=?@`{}\\[\\]~|-]+$