У меня есть строка, которая выглядит как этотPython помощи регулярных выражений
24 (prem)-42-48 (6 ext)
и то, что я хочу, чтобы выйти из него является
['24 prem', '42', '48', '6 ext']
Я могу получить номера, как это:
import re
MyString = r'24 (prem)-42-48 (6 ext)'
Splits = re.findall(r'(\d+)', MyString) # ['24','42','48','6']
, но я теряю успех текст.
Я также могу это сделать:
import re
MyString = r'24 (prem)-42-48 (6 ext)'
Splits = re.findall(r'[\\s:\\-]', MyString) # ['24 (prem)','42', '48 (6 ext)']
но не попадает в (6 ext)
пункт.
EDIT после просмотра ответов:
Я думаю, что, возможно, самый простой способ для меня, чтобы справиться с этим было бы разделить на номера, а затем просто использовать str.replace, чтобы избавиться от «(» и «» символов.
Итак, есть простое утверждение, регулярное выражение для разбиения строки до первого символа номера?
результат его выполнения на
'24 (prem)-42-48 (6 ext)'
будет
['24 (prem)-','42-',48 (', '6 ext)]
Итак, * что такое шаблон *? Вы дали нам один вход + ожидаемая выходная линия здесь, но ничего о том, как вход может * меняться *. –
Ваш последний шаблон также недействителен; эта строка кода создает '['-', '-']' и будет находить все обратные косые черты, двоеточия, тире символов '' s''. –
И последнее, но не менее важное: ваш образец вывода: a) не Python, и b) невозможно с помощью обычного выражения; '['24', 'prem', '42', '48', '6 ext']' возможно, но не ''24 prem'' в качестве первого элемента. –