Я изо всех сил пытался написать однострочное регулярное выражение, которое разбивает все, что мне нужно. Я действительно хочу исчерпать все свои возможности, прежде чем прибегнуть к повторной оценке моих данных.
В настоящее время я использую это регулярное выражение для разделения одной строки данных ascii на фрагменты:
line = 'setAttr -s 2 ".iog[0].og"'
re.split(r'("[^"\\]*(?:\\.[^"\\]*)*"|[^\s();]+)', line)
// Result: ['setAttr', '-s', '2', '".iog[0].og"']
Что я действительно хочу, так это захватить только текст внутри строковых кавычек вместе со всеми обычными словами, числами и флагами:
// Result: ['setAttr', '-s', '2', '.iog[0].og']
Я знаю, что это кажется глупым, но время выполнения является основным фактором или проблемой для этого кода. В настоящее время о Shlex не может быть и речи, поскольку обработка тысяч строк данных занимает слишком много времени.
Кто-нибудь знает такое выражение?