как я могу получить строку образца из скомпилированного regexp шаблона в Python

Если бы Вы хотите сделать это просто в CSS затем, у Вас был бы класс, который Вы присвоили бы каждому альтернативному элементу списка. Например,

<ul>
    <li class="alternate"><a href="link">Link 1</a></li>
    <li><a href="link">Link 2</a></li>
    <li class="alternate"><a href="link">Link 3</a></li>
    <li><a href="link">Link 4</a></li>
    <li class="alternate"><a href="link">Link 5</a></li>
</ul>

, Если бы Ваш список динамично сгенерирован, эта задача была бы намного легче.

, Если Вы не хотите должными быть вручную обновлять это содержание каждый раз, Вы могли пользоваться библиотекой jQuery и поочередно применять стиль к каждому <li> объект в Вашем списке:

<ul id="myList">
    <li><a href="link">Link 1</a></li>
    <li><a href="link">Link 2</a></li>
    <li><a href="link">Link 3</a></li>
    <li><a href="link">Link 4</a></li>
    <li><a href="link">Link 5</a></li>
</ul>

И Ваш код jQuery:

$(document).ready(function(){
  $('#myList li:nth-child(odd)').addClass('alternate');
});
82
задан SilentGhost 12 September 2009 в 19:41
поделиться

3 ответа

p.pattern

Подробнее о модуле re: http://docs.python.org/library/re.html

100
ответ дан 24 November 2019 в 09:16
поделиться

Из раздела «Объекты регулярных выражений» документации модуля re :

RegexObject.pattern

Строка шаблона, из которой объект RE был скомпилирован.

Например:

>>> import re
>>> p = re.compile('my pattern')
>>> p
<_sre.SRE_Pattern object at 0x1001ba818>
>>> p.pattern
'my pattern'

С модулем re в Python 3.0 и более поздних версиях вы можете найти это, выполнив простой dir (p) :

>>> print(dir(p))
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'findall', 'finditer', 'flags',
'groupindex', 'groups', 'match', 'pattern', 'scanner', 'search',
'split', 'sub', 'subn']

Однако это не работает на Python 2.6 (или 2.5) - команда dir не идеальна, поэтому всегда стоит проверять документацию!

>>> print dir(p)
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner',
'search', 'split', 'sub', 'subn']
21
ответ дан 24 November 2019 в 09:16
поделиться

Да:

print p.pattern

подсказка, используйте функцию dir в Python чтобы получить список членов:

dir(p)

этот список:

['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'findall', 'finditer', 'flags', 'groupindex', 'groups', 'match', 'pattern',
'scanner', 'search', 'split', 'sub', 'subn']
9
ответ дан 24 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: