Что такое регулярное выражение для управляющих символов?
Я пытаюсь сопоставить управляющий символ в форме \^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, чтобы найти управляющие символы..