Что-то не так с моим регулярным выражением? - PullRequest
3 голосов
/ 22 февраля 2012

Я написал регулярное выражение, которое заменит нечетное количество косых черт четным числом косых черт, а четное число косых черт останется нетронутым.Но по какой-то причине я получаю сообщение об ошибке:

int matchFlags   = StringUtil.MATCH_SINGLELINE;
int replaceFlags = StringUtil.REPLACE_ALL +  StringUtil.REPLACE_BACKREFERENCES;
String pattern = "(?<!/)/(//)*(?!/)"; //replace odd # of slashes only.
String replace = "$0$0";
RE re = new RE(pattern, matchFlags);
result= re.subst(result, replace, replaceFlags);

Это исключение :

Exception in thread "main" org.apache.regexp.RESyntaxException: Syntax error: Missing operand to closure

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Кажется, что вы не можете использовать отрицательный взгляд вперед с org.apache.regexp. Может быть, вы должны рассмотреть возможность использования другой библиотеки ...

1 голос
/ 22 февраля 2012

отлично работает:

public class Test {
    public static void main(String[] args) {
        System.out.println(args[0].matches("(?<!/)/(//)*(?!/)"));
    }
}

может быть, ваш RE ожидает что-то другое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...