регулярное выражение для получения всего текста (что угодно) в [[]] - PullRequest
0 голосов
/ 26 марта 2012

У меня есть текст:

[[Hindi]]
[[Madras Talkies]]
[[Eros International]] [[A. R. *Rehman]]

Я хочу получить все в [[]] как

Hindi
Madras Talkies
Eros International
A. R. *Rehman

Я пробовал пару регулярных выражений, таких как:

        re.search('\[\[.*\]\]$',values)
    \[\[(\w+\s\w+)\]\](.*)$'
    \[\[(\w+)\]\]

Ничто не работает ни для одного из них.Кто-нибудь может подсказать, что идет не так?

Ответы [ 4 ]

2 голосов
/ 26 марта 2012

Следующее регулярное выражение должно сделать трюк:

\[\[(.*?)\]\]

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

Этот конкретный веб-сайт может показаться вам ленивым / жадным

http://www.regular -expressions.info / repeat.html # жадный

0 голосов
/ 26 марта 2012

Есть ли причина, по которой вы не просто пропускаете первые два и последние два символа в строке?

s = ['[[Hindi]]',
     '[[Madras Talkies]]',
     '[[Eros International]]',
     '[[A. R. *Rehman]]']
names = [x[2:-2] for x in s]
0 голосов
/ 26 марта 2012

Вместо сопоставления символа, если он существует + любые дополнительные символы, как все вы, ребята, здесь, я сопоставляю то, что не является [ или ] (минимум 1) внутри [[]]

$ python2
>>> import re
>>> text = '[[Eros International]] [[A. R. *Rehman]]'
>>> re.findall('\[\[([^\[\]]+)\]\]', text)
['Eros International', 'A. R. *Rehman']
>>> re.findall('\[\[([^\[\]]+)\]\]', text)[0]
'Eros International'
>>> re.findall('\[\[([^\[\]]+)\]\]', text)[1]
'A. R. *Rehman'
0 голосов
/ 26 марта 2012

Вам нужен поиск без жадности, поэтому регулярное выражение должно быть:

\[\[(.*?)\]\]

Если Python 2.7 не поддерживает шаблон без жадности (это ? после .*), тогда вы можете использовать только .*, но третья строка выборки с двумя наборами удвоенных квадратных скобок будет соответствовать только один раз, и захваченный текст будет иметь вид:

Eros International]] [[A. R. *Rehman

При несжатом сопоставлении вы 'я получу два отдельных совпадения на этой линии.

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