Соответствует текстовой строке ASCII вида ^X
, используя шаблон \^.
, не более того. Сопоставьте текстовую строку ASCII вида \^X
с шаблоном \\\^.
. Вы можете ограничить эту точку до [?@_\[\]^\\]
, поэтому \\\^[A-Z?@_\[\]^\\]
. Легче читать как [?\x40-\x5F]
для класса символов в скобках, следовательно, \\\^[?\x40-\x5F]
для литерала BACKSLASH, за которым следует литерал CIRCUMFLEX, за которым следует что-то, что превращается в один из допустимых управляющих символов.
Обратите внимание, что это результат распечатки шаблона или того, что вы прочитали из файла. Это то, что вам нужно передать компилятору regex. Если у вас есть строковый литерал, вы, конечно, должны удвоить каждый из этих обратных слешей. `\\\\\\^[?\\x40-\\x5F]"
Да, это выглядит безумно, но это потому, что Java не поддерживает регулярные выражения напрямую, как это делают Groovy и Scala - или Perl и Ruby. Работа с регулярными выражениями всегда проще без дополнительной bbaacckksslllllaasshheesssssess. :)
Если бы у вас были реальные управляющие символы вместо их косвенного представления, вы бы использовали \pC
для всех буквенных кодовых точек со свойством GC = Other или \p{Cc}
для просто GC = Control.