/ / Python - вилучення списку підрядків - python, regex

Python - витягування списку підрядкових рядків - python, regex

Як витягти список підрядків на основі деяких шаблонів у python?

наприклад,

str = "this {{is}} a sample {{text}}".

очікуваний результат: список пітона, який містить "є" і "текст"

Відповіді:

14 за відповідь № 1
>>> import re
>>> re.findall("{{(.*?)}}", "this {{is}} a sample {{text}}")
["is", "text"]

2 для відповіді № 2

Припускаючи, що "деякі шаблони" означають "окремі слова між двома {}" s ":

імпортувати повторно

re.findall ("{{(w *)}}", рядок)

Редагувати: відповідь Ендрю Кларка реалізує "будь-яку послідовність символів між двома {}" s "


2 для відповіді № 3

Ви можете використовувати наступне:

res = re.findall("{{([^{}]*)}}", a)
print "a python list which contains %s and %s" % (res[0], res[1])

Підбадьорює


1 для відповіді № 4

Рішення, засноване на регулярному виразі, добре для вашого прикладу, хоча я б рекомендував щось більш надійне для більш складного введення.

import re

def match_substrings(s):
return re.findall(r"{{([^}]*)}}", s)

Регістр зсередини:

[^}] відповідає всім, що не є ""
([^}]*) збігається з будь-якою кількістю не-} символів і групує їх
{{([^}]*)}} ставить вищевказані подвійні дужки

Без дужок вище, re.findall поверне весь матч (тобто ["{{is}}", "{{text}}"]. Однак, коли регулярний вираз містить групу, findall буде використовувати його замість.


0 для відповіді № 5

Ви можете використовувати регулярний вираз, щоб відповідати всім, що відбувається між ними {{ і }}. Чи буде це працювати для вас?

Взагалі кажучи, для позначення певних рядків у великому тексті, a дерево суфіксів буде корисним.