Правильные регулярные выражения не могли бы этого сделать, поскольку вы покинули бы территорию обычных языков для приземления на территориях свободного пространства контекста.
Тем не менее, пакеты «регулярного выражения», которые предлагают многие языки,
Например, регулярные выражения Lua имеют распознаватель «%b()
», который будет соответствовать сбалансированной круглой скобке. В вашем случае вы будете использовать «%b{}
»
. Еще один сложный инструмент, подобный sed, - gema , где вы очень легко сопоставляете сбалансированные фигурные скобки с помощью {#}
.
Итак, в зависимости от инструментов, которые у вас есть, ваше «регулярное выражение» (в более широком смысле) может соответствовать вложенным скобкам.
Другой подход заключается в использовании сторонней библиотеки Java, которая предоставляет системные вызовы POSIX; например,
Проблема с этим подходом заключается в том, что он по своей сути не переносимый (не будет работать на платформе, не совместимой с POSIX), и требуется родная библиотека, специфичная для платформы ... и все, что влечет за собой.
java.nio.file.attribute.PosixFileAttributes
в Java SE 7.
Вы не можете играть с umask напрямую, так как Java является абстракцией, а umask - специфичной для POSIX. Но у вас есть следующий API:
File f;
f.setExecutable(true);
f.setReadable(false);
f.setWritable(true);
Доступно еще несколько API, проверить документы .
Если вы должны имеют прямой доступ к umask, либо выполняйте его через JNI, и chmod()
syscall, либо создайте новый процесс с помощью exec("chmod")
.
java.nio.file
.
– Jesper
5 July 2010 в 08:03