Вы можете использовать
re.sub(r'\(([^()]*)\)', r'\1', s)
См. regex demo .
Подробности
\(
- (
символ ([^()]*)
- группа 1 (\1
относится к значению этой группы из шаблон замены): 0 или более символов, кроме скобок \)
- См. демонстрацию Python :
import re
s = "(NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))"
print(re.sub(r'\(([^()]*)\)', r'\1', s))
# => (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))
Linux явно зависит от некоторых gcc расширений, таким образом, любой другой компилятор должен быть совместим с необходимыми расширениями в этом случае.
Это не "нет", так как для отдельного поставщика/разработчика компилятора, конечно, не невозможно отследить расширения gcc, просто точка данных, которая могла бы помочь Вам искать.
В какой-то момент tcc обработал бы и выполнил бы источник ядра Linux. Таким образом, это было бы a да, я предполагаю.
:: Благодарность за информацию к ephemient в комментариях.::
Многие, многие, много лет назад, было на самом деле возможно скомпилировать ядро с g ++, и насколько я помню, что часть мотивации была то, потому что C++ имел более сильную проверку типа, не обязательно, чтобы иметь g ++ для создания объектных файлов. Но как Neil Butterworth указали, Linus является не конкретный любящий C++, и существует нулевой шанс, что это когда-либо будет возможно снова.
Компилятор IBM смог сделать это некоторые версии Linux назад, но я не уверен в теперь, и при этом я не уверен в том, как хорошо IBM оптимизировала ядро, как проинструктировано. Все, что я знаю, они заставили это создавать.
Поскольку Linux сам размещающий (с его собственным libc) и был разработан из запуска с gcc (и gcc кросс-компиляторы), его вид глупых для использования чего-либо еще.
Я думаю главным образом, играть по правилам с макросами препроцессора и проинструктированной оптимизацией является самым большим препятствием (даже не входящий в отклонение от газа), поскольку GNU в основном записал книгу по вышеупомянутому и расширил его. Кроме того, Linux настраивает свою оптимизацию для работы с gcc, например, не получайте пойманное использование, 'энергозависимое' в ядре без чертовски серьезного основания. Используя встроенный и на самом деле имеющий компилятор соглашаются, другая проблема.
Linus является первым, который назовет GCC &*# дырой $, которая делает для лучшего компилятора.
Поэтому у нас есть большие дебаты GNU/Linux.
My non-technical guess: The Linux Kernel can't currently (2009) be compiled with any compiler other than the GNU compiler, gcc.
I say this on the basis that I've heard Richard Stallman, with some conviction, say Linux should be called GNU/Linux because the kernel is "only 1 part of the operating system" and I'm guessing he would not be able to say this if the kernel was non-dependant on GNU (e.g. a tonne of embedded devices run a Linux OS without any GNU software).
As I said, just a guess, let me know if I'm wrong...
Разработчики LLVM пытаются скомпилировать его с помощью clang . Мета-ошибка при компиляции ядра Linux с помощью clang содержит более подробную информацию (дерево зависимостей для этой мета-ошибки показывает, как мало, кажется, осталось).