Что такое регулярное выражение для управляющих символов?

Я пытаюсь сопоставить управляющий символ в форме \^c, где c - любой действительный символ для управляющих символов. У меня есть это регулярное выражение, но в настоящее время оно не работает: \\[^][@-z]

Я думаю, что проблема заключается в том, что символ вставки (^) является частью механизма синтаксического анализа регулярных выражений.

2 ответа

Решение

Соответствует текстовой строке ASCII формы ^X используя шаблон \^., ничего более. Соответствует текстовой строке ASCII формы \^X с рисунком \\\^., Вы можете ограничить эту точку [?@_\[\]^\\], так \\\^[A-Z?@_\[\]^\\], Легче читать как [?\x40-\x5F] для класса символов в скобках, следовательно \\\^[?\x40-\x5F] для литерала BACKSLASH, за которым следует литерал CIRCUMFLEX, за которым следует что-то, что превращается в один из допустимых управляющих символов.

Обратите внимание, что это результат распечатки шаблона или того, что вы прочитали из файла. Это то, что вам нужно передать компилятору регулярных выражений. Если у вас есть строковый литерал, вы должны, конечно, удвоить каждый из этих обратных слешей. `\\\\\\^[?\\x40-\\x5F]" Да, это выглядит безумно, но это потому, что Java не поддерживает регулярные выражения напрямую, как это делают Groovy и Scala - или Perl и Ruby. Работа с регулярными выражениями всегда легче без дополнительной bbaacckksslllllaasshheesssssess.:)

Если бы у вас были реальные управляющие символы вместо их косвенного представления, вы бы использовали \pC для всех буквенных кодовых точек со свойством GC=Other, или \p{Cc} просто GC = контроль.

Проверьте это: http://www.regular-expressions.info/characters.html. Вы должны быть в состоянии использовать \cA to \cZ, чтобы найти управляющие символы..

Другие вопросы по тегам