python正则表达式替换

python正则表达式替换,python,regex,Python,Regex,我正在尝试更改包含子字符串的字符串,例如 the</span></p> <p><span class=font7>currency 换行符处是CRLF 代码前后的单词会发生变化。我只想在第二个单词以小写字母开头时替换它。代码中唯一改变的是“font”后面的数字 我试过: p = re.compile('</span></p>\r\n<p><span class=font\d>([a-z])') re

我正在尝试更改包含子字符串的字符串,例如

the</span></p>
<p><span class=font7>currency
换行符处是CRLF

代码前后的单词会发生变化。我只想在第二个单词以小写字母开头时替换它。代码中唯一改变的是“font”后面的数字

我试过:

p = re.compile('</span></p>\r\n<p><span class=font\d>([a-z])')
res = p.sub(' \1', data)
p=re.compile('

\r\n([a-z])) res=p.sub('\1',数据)
但这不起作用


如何修复此问题?

使用前瞻性断言

p = re.compile('</span></p>\r\n<p><span class=font\d>(?=[a-z])')
res = p.sub(' ', data)
p=re.compile('

\r\n(?=[a-z])) res=p.sub(“”,数据)
这是:

result = re.sub("(?si)(.*?)</?[A-Z][A-Z0-9]*[^>]*>.*</?[A-Z][A-Z0-9]*[^>]*>(.*)", r"\1 \2", subject)

尽管我强烈建议不要将regex与xml/html/xhtml一起使用。这个通用正则表达式将删除所有元素并捕获组1、2之前/之后的任何文本。

我认为您应该使用标记re.DOTALL,这意味着它将“看到”不可打印的字符,例如换行符,就好像它们是普通字符一样

因此,代码的第一行将变成:

p = re.compile('</span></p>..<p><span class=font\d>([a-z])', re.DOTALL)
p=re.compile('

。([a-z]),re.DOTALL)
(不是两个未划线的点,而是换行符)

实际上,还有re.MULTILINE,每次我遇到这样的问题,其中一个最终解决了这个问题


希望有帮助。

因为不应该使用正则表达式解析html。除了@JBernardo之外,您的问题还不清楚。比如?那么还有什么?@FailedDev:编辑澄清了吗?@JBernardo:你有什么建议,尤其是只有在第二个单词以小写字母开头时才进行替换?将
python strip html
放入搜索框并按enter键怎么样?第一次点击会让你成功,但似乎找不到子串。p、 match(data)不返回任何内容。它似乎找不到子字符串。p、 匹配(数据)返回nothing@foosion:
match
从字符串开始搜索。尝试
p.search(data)
。html看起来颠倒的原因是你看到的是一段的结尾和另一段的开头。那个正则表达式看起来非常有用complex@foosion不管你在其中加入什么元素,这个正则表达式都会工作。
the</span></p>
<p><span class=font7>currency
the currency
p = re.compile('</span></p>..<p><span class=font\d>([a-z])', re.DOTALL)