Разделите строку и по-прежнему сохраняйте разделитель

#python #regex #split

#питон #регулярное выражение #расщеплять

Вопрос:

У меня есть строка кода, похожая на эту:

 replace [IntType] import TYPE [libc_to_basic_type_entry*]  

Теперь я хочу разделить их на массивы, используя регулярное выражение Python, подобное этому:

 ["replace", "[", "IntType", "]"] ["import", "TYPE", "[", "libc_to_basic_type_entry, "*", "]"]  

Каков наилучший способ сделать это? Спасибо.


Сначала я пытаюсь сделать все просто string.split("[") и продолжаю циклически повторять строку split с другими символами. Но я обнаружил, что этот способ неэффективен, поэтому я хотел бы попросить о помощи, используя регулярное выражение.

Комментарии:

1. Сначала я пытаюсь сделать простую строку.split(«[«) и продолжаю перебирать строку, чтобы разделить ее с другими символами. Но я обнаружил, что этот способ неэффективен, поэтому я хотел бы обратиться за помощью с помощью регулярного выражения

2. Всегда лучше показать свои попытки, о которых идет речь. Я отредактировал ваш вопрос и обновил его вашим комментарием. Пожалуйста, не взимайте дополнительную плату за дополнительную информацию.

Ответ №1:

Вы можете использовать это регулярное выражение:

 s*(w |[^ws])s*  

Сведения о регулярном выражении:

  • s* : Совпадение 0 или более пробелов
  • ( : Запустить группу захвата
    • w : Сопоставьте 1 словесных символов
    • | : ИЛИ
    • [^ws] : Сопоставьте символ, который не является словом или пробелом
  • ) : Конечная группа захвата
  • s* : Совпадение 0 или более пробелов

Код:

 s = 'import TYPE [libc_to_basic_type_entry*]' print (re.findall(r's*(w |[^ws])s*', s))  

Выход:

 ['import', 'TYPE', '[', 'libc_to_basic_type_entry', '*', ']']