python 是否有解决方案来选择某些正则表达式模式的第一个和最后一个字符?

bxgwgixi  于 2023-09-29  发布在  Python
关注(0)|答案(1)|浏览(60)

有一个很长的XML格式的文本,如:

><span class='ocrx_word' id='word_1_21_0_1_0' title='bbox 409 912 417 927'><</span><span class='ocrx_word' id='word_1_21_0_1_1' title='bbox 416 911 446 925'><forest>...

这个hocr文本是由谷歌文档人工智能。我想使用hocr文件制作一个可搜索的pdf,但当我尝试制作pdf时,我使用的pdf库显示错误。库将单词<forest>作为损坏的xml元素处理。所以我想把单词<forest>替换成&lt;forest&gt;
我可以使用正则表达式找到模式:(?!<(div|span|\/span).*>)(<.*>)
此表达式排除了<span></span>元素,仅包含<>之间的单词。但是我怎么能只改变第一个和最后一个字符呢?

b1uwtaje

b1uwtaje1#

您可以使用以下指令:

re.sub(r"(?!<(?:div|span|\/span).*>)<([^<>]*)>", "&lt;\1&gt", my_string)

注意,<>被排除在捕获组之外。
我还将.*替换为[^<>]*,因为.还匹配<>
查看here演示。

相关问题