Регулярное выражение в flex для элементов типа Char в Java?

Я делаю минисоставитель в CUP и JFLEX, но не знаю, что регулярное выражение удовлетворяет набор Char.

Спецификация набора, который мне дал преподаватель, - следующая:

Позволяется определение постоянных величин и переменные типа char. Для постоянных величин используется тот же синтаксис, что и в Java, используя простые кавычки, (например 'a') и когда могут использовать последовательности утечки равно как в Java для специальных символов ('\b','\n','\f','\r','\t','\"','\\','\''), также как и последовательности в Unicode (например '\u1234').

А именно, что набор элементов, который должен брать мне регулярное выражение, '\n', '&', 'a', 'u0043', и т.д.

Я использовал это регулярное выражение, но оно я не функционировало:

("'"."'") | "'"(‘\b’,’\n’,’\f’,’\r’,’\t’,’\”’,’\\’,’\’’)"'" | ("'"'\u'[0-9]+"'")

Кто-то может предлагать мне другое регулярное выражение?
Спасибо заранее.

2
задан 19.08.2019, 23:47
1 ответ

Ты можешь тестировать следующую expresiГіn регулярная:

'(\\(["'\\bfnrt]|u[0-9A-Fa-f]{4})|[^\\'])'

Визуально:

visual

В Java рекомендует себе определять постоянную величину Pattern, чтобы улучшать эффективность: Вышедшие

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("\'(\\\\([\"\'\\\\bfnrt]|u[0-9A-Fa-f]{4})|[^\\\\\'])\'");

public static void main(String[] args) {
    String input = "\'\\n\', \'&\', \'a\', \'\\u0043\', \'\"\'";
    Matcher matcher = REGEX_PATTERN.matcher(input);
    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}

:

'\n'
'&'
'a'
'\u0043'
'"'
1
ответ дан 01.12.2019, 22:30