Регулярное выражение: как сопоставить последовательность пар ключ-значение в конце строки

Я пытаюсь сопоставить пары "ключ-значение", которые появляются в конце (длинных) строк. Строки выглядят так (я заменил "\ n")

my_str = "lots of blah
          key1: val1-words
          key2: val2-words
          key3: val3-words"

, поэтому я ожидаю совпадения "key1: val1-words", "key2: val2-words" и "key3: val3-words".

  • Набор возможные имена ключей известны.
  • Не все возможные ключи появляются в каждой строке.
  • По крайней мере, два ключа появляются в каждой строке (если это упрощает сопоставление).
  • val-words может состоять из нескольких слов.
  • пары ключ-значение должны сопоставляться только в конце строки.
  • Я использую модуль Python re.

Я думал

re.compile('(?:tag1|tag2|tag3):')

плюс некоторые упреждающие утверждения были бы решением. Хотя я не могу это понять. Как мне это сделать?

Спасибо.

/ Дэвид

Реальный пример строки:

my_str = u'ucourt métrage pour kino session volume 18\nThème: O sombres héros\nContraintes: sous titrés\nAuthor: nicoalabdou\nTags: wakatanka productions court métrage kino session humour cantat bertrand noir désir sombres héros mer medine marie trintignant femme droit des femmes nicoalabdou pute soumise\nPosted: 06 June 2009\nRating: 1.3\nVotes: 3'

РЕДАКТИРОВАТЬ:

На основе решения Микеля теперь я использую следующее: ПРОИЗВОДСТВО КОНТРОЛЬНАЯ РАБОТА CUSTOM При запуске команды Grails можно указать используемую среду с помощью флага -Denv, ...

grails.util.Environment , определяет ряд предварительно настроенных сред

  • DEVELOPMENT
  • PRODUCTION
  • TEST
  • CUSTOM

При запуске команды Grails можно указать среду для использования с помощью флага -Denv , например grails run-app -Denv = test . Вы также можете указать блок кода, специфичный для определенной среды, используя закрытие, например:

environments {
    production {
        grails.serverURL = "http://www.changeme.com"
    }
    development {
        grails.serverURL = "http://localhost:8080/${appName}"
    }
    test {
        grails.serverURL = "http://localhost:8080/${appName}"
    }
}

Эти зависящие от среды закрытия могут использоваться в Bootstrap.groovy и Config.groovy ], есть ли другие места?

Кроме того, могу ли я определить свою собственную среду, например PRE_PRODUCTION , таким образом, что он будет работать с вышеуказанными замыканиями и флагом -Denv ?

Наконец, можно ли использовать среду CUSTOM с флагом -Denv ?

13
задан Ken Liu 8 October 2012 в 00:13
поделиться