Регулярное выражение таблицы Python MediaWiki (найти строки определенного формата, а затем извлечь подстроки внутри)

1

Я пытаюсь найти все строки формата {{rdex|001|001|Bulbasaur|2|Grass|Poison}} в большом текстовом файле, а затем извлечь подстроки, соответствующие первым 001 и Bulbasaur, возможно, как кортеж.

Я предполагаю, что регулярное выражение с группами захвата может использоваться для обоих; может ли кто-нибудь сказать мне соответствующее регулярное выражение для использования в Python 3.1, а также возможный код? Я regex noob.

Спасибо!

Теги:
mediawiki

3 ответа

1
Лучший ответ
import re
text="""{{rdex|001|001|Bulbasaur|2|Grass|Poison}}"""
re.findall("\{\{[^|]+\|(\d+)\|\d+\|([^|]+)",text)
[('001', 'Bulbasaur')]
  • 0
    это какое-то летное регулярное выражение прямо там. могу я спросить, где ты это узнал? это было из книги / интернет-учебника / божественного дара? большое спасибо!
  • 0
    Страница синтаксиса регулярных выражений MSDN была моим первым впечатлением от регулярных выражений msdn.microsoft.com/en-us/library/1400241x(VS.85).aspx
1
re.match('^{{[^|]+\|([^|]+)\|[^|]+\|([^|]+)\|[^|]+\|[^|]+\|[^|]+\}}$', S).groups()
0
line="{{rdex|001|001|Bulbasaur|2|Grass|Poison}}"
s=line.find("{{")
e=line.find("}}")
if s != -1 and e != -1:
    sub=line[s+2:e].split("|")
    print sub[1],sub[3]

Выход

$ ./python.py
001 Bulbasaur

Ещё вопросы

Сообщество Overcoder
Наверх
Меню