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

Java Regular expression does not match using Apache RE

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

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

对于以下情况,此 RE 应该 return 正确:

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

我正在使用 Apache 的 RE,当 运行 匹配函数时得到 false。
我认为我的正则表达式缺少一些东西,可能是用特殊字符处理的。
问题是,我的表达式有什么问题?
这是我的 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. 你的正则表达式不能在字符 class.
  2. 中间有未转义的连字符
  3. 如果你已经有 \s 那么就不需要匹配 \n\t 因为 \s 匹配所有的白-space 包括space、制表符和换行符。
  4. [a-zA-Z0-9_]可以缩短为\w
  5. 反斜杠需要双重转义。

试试这个正则表达式:

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