Заменить текст, Jython, Regex - PullRequest
0 голосов
/ 26 июня 2009

Я обрабатываю свой веб-сайт и хочу изменить некоторые вещи на страницах.

Я хочу заменить следующую строку:

in the
<SPAN class="Bold">
More...
</SPAN>
column to your right.

Иногда не имеет тегов <span>:

in the
More...
column to your right.

Я хотел бы заменить это на "ниже". Я попытался сделать это с помощью простого метода replace () в python, но, поскольку иногда текст не имеет тега <span> и состоит из нескольких строк, кажется, что он не работает. Моя единственная мысль - использование регулярных выражений, но я не в курсе регулярных выражений, кто-нибудь может протянуть руку?

Спасибо

Eef

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

Если у вас есть html-текст в строке "foo", код для этого на Python будет выглядеть так:

import re
#re.DOTALL is used to make the . match all characters including newline
regexp = re.compile('in the.*?More\.\.\..*?column to your right\.', re.DOTALL)
re.sub(regexp, 'below', foo)
0 голосов
/ 30 июня 2009

Попробуйте это:

import re
pattern = re.compile('(?:<SPAN class="Bold">\s*)?More\.\.\.(?:\s*</SPAN>)?')
str = re.sub(pattern, 'below', str)

Синтаксис (?:…) является группировкой без захвата, на которую нельзя ссылаться как на обратную ссылку.

...