正则表达式不匹配正斜杠

时间:2013-01-04 12:52:47

标签: java regex

我正在尝试匹配以下模式:

LOCAL1*.CRIT /var/log/messages

使用正则表达式:

(^LOCAL[0-9]|^[\\*])[.]([\\*]{1}|[a-zA-Z]*)\\s*(/[/a-zA-Z])

它似乎匹配除了最后路径之外的所有内容。关于为什么会发生这种情况的任何线索?

2 个答案:

答案 0 :(得分:2)

看起来你在最后一组的末尾错过了一个星号:

(^LOCAL[0-9]|^[\\*])[.]([\\*]{1}|[a-zA-Z]*)\\s*(/[/a-zA-Z]*)
                                                          ^ THIS

否则你只匹配第一个斜杠和另外一个字符。

此外,关于你的正则表达式和LOCAL1*的匹配,还有一些不太正确的地方。在目前的形式中,正则表达式与最后一个字符(*)不匹配。这很容易修复,但正确的修复取决于您的要求(*总是存在吗?它是可选的吗?等等)

答案 1 :(得分:2)

不应该是这样吗?

(^LOCAL[0-9]\\*|^[\\*])[.]([\\*]{1}|[a-zA-Z]*)\\s*(/[/a-zA-Z]*)