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;
}
- 你的正则表达式不能在字符 class.
中间有未转义的连字符
- 如果你已经有
\s
那么就不需要匹配 \n
和 \t
因为 \s
匹配所有的白-space 包括space、制表符和换行符。
[a-zA-Z0-9_]
可以缩短为\w
- 反斜杠需要双重转义。
试试这个正则表达式:
^[\w\s\r!$()*,./:;=?@`{}\[\]~|-]+$
我有这个正则表达式字符串:
^[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;
}
- 你的正则表达式不能在字符 class. 中间有未转义的连字符
- 如果你已经有
\s
那么就不需要匹配\n
和\t
因为\s
匹配所有的白-space 包括space、制表符和换行符。 [a-zA-Z0-9_]
可以缩短为\w
- 反斜杠需要双重转义。
试试这个正则表达式:
^[\w\s\r!$()*,./:;=?@`{}\[\]~|-]+$