Разделить с помощью регулярных выражений, но сохранить разделители - PullRequest
0 голосов
/ 17 января 2019

Я ищу конкретное использование регулярных выражений в Python. Я нашел несколько похожих решений, но не мог понять, как адаптировать их к этому случаю.

Я хотел бы знать, как с помощью регулярных выражений я могу разбить следующую строку:

s = '(some, word), (someword), (some other, word)'

Для получения:

['(some, word)', '(someword)', '(some other, word)']

Я хотя бы использовал ), в качестве разделителя, но я не знаю, как сохранить ) после разделения. Как я мог это сделать?

Вот моя попытка:

re.split('\),', s)
['(some, word', ' (someword', ' (some other, word)']

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Попробуйте это регулярное выражение:

(?<=\)),\s*

Нажмите для демонстрации

Пояснение:

  • (?<=\)) - положительный взгляд сзади, чтобы убедиться, что текущей позиции предшествует )
  • ,\s* - соответствует ,, за которым следует 0+ пробелов.

Затем вы можете выполнять операцию разбиения при каждом совпадении.

0 голосов
/ 17 января 2019

Угадайте, это то, что вы хотите:

>>> s = '(some, word), (someword), (some other, word)'
>>> re.findall('\(.*?\)', s)
['(some, word)', '(someword)', '(some other, word)']

Я думаю, что вы поняли, потому что кто-то думает, что вы не приложили усилия к вашей проблеме / к регулярному выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...