2012-03-16 1 views
0

Сначала код:Python Regexp отказ

str = "(suf) some text here (stuff here)" 
r = re.split(r"(?<=[\)]) (?=[\w\(])", str) 

Это пример некоторого кода я использую для анализа отформатированный файл. В основном я пытаюсь получить ('suf','some text here (stuff here)'). Я пробовал различные перестановки, но все, что он мне дает, это целая строка.

+4

Когда я запустите это, я получаю ['(suf)', 'некоторый текст здесь (материал здесь)'], разве это не то, что вы ищете? – xitrium

+0

Работает для меня тоже. Вы уверены, что это точно (настоящая) строка, которую вы используете, когда это не удается? Попробуйте предоставить значение 'repr()'. –

+0

Я не смог воспроизвести вашу проблему либо – Atif

ответ

1

Вы разделяете строку, не захватывая внутренние спички. Если вы хотите, чтобы захватить строку внутри первых скобок и все остальное на два объекта, это работает с match (может работать с расколом тоже, это просто, как я бы это сделать):

str = "(suf) some text here (stuff here)" 
# capture anything inside first set of brackets 
# then capture everything else, dropping any spaces between them 
r = re.match(r"^\((.*?)\)\s*(.*)", str) 
r.groups() 
r.group(1) # group(0) is the full original string 
r.group(2) 
Смежные вопросы