2009-06-26 136 views
0

我正在处理我的网站,并希望更改页面上的某些内容。替换文本,Jython,正则表达式

我想替换以下字符串:

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

有些时候是不具备<span>标签:

in the 
More... 
column to your right. 

我想与“下”来取代这一点。我试着用Python中的简单替换()来做这件事,但是因为有时文本没有<span>标签,并且在多行上看起来不起作用。我唯一的想法是使用正则表达式,但我不能加快正则表达式,任何人都可以伸出援助之手吗?

感谢

EEF

+0

你用“下面”替换了什么? “更多...”部分,还是全部? – 2009-06-26 15:10:52

+0

我正在寻找在两种情况下全部取代它。 – RailsSon 2009-06-26 15:11:38

回答

2

假设你已经在字符串 “foo” 的HTML文本,代码要做到这一点在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

试试这个:

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

(?:…)语法是一个不能被引用的非捕获分组作为反向引用。