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

标签 python regex cloud-document-ai

有一个很长的 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 文本由 google document ai 制作。我想使用 hocr 文件制作可搜索的 pdf,但是当我尝试制作 pdf 时,我使用的 pdf 库显示错误。该库处理单词<forest>作为损坏的 xml 元素。所以我想替换这个词<forest>进入&lt;forest&gt; .

我可以使用正则表达式找到模式:(?!<(div|span|\/span).*>)(<.*>)

此表达式不包括 <span></span>元素,并且仅包含 < 之间包围的单词和> 。 但我怎样才能只改变第一个和最后一个字符呢?

最佳答案

您可以使用以下说明:

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

请注意<>被排除在捕获组之外。

我还替换了 .*[^<>]* ,因为.也匹配 <> .

查看演示 here .

关于python - 是否有解决方案来选择某些正则表达式模式的第一个和最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77167859/

相关文章:

python - 如何使用 Kameleo 和 Selenium 加载多个 chrome 浏览器?

regex - 检测 Lua 中的最后一个字符是否不是多字节

regex - 替换括号前的空格

python - 使用 Python 将一个 .csv 中的列添加到另一个 .csv 文件

python - Django迁移ForeignKey到IntegerField不丢数据的迁移策略

java - FixedCredentialsProvider 在调用 Google Cloud 服务时给出未经授权的异常

python - 如何将 "google.cloud.documentai_v1.types.document"对象转换为 json

python - 使用 Docker 在 Raspberry pi 中安装 Noetic 时出现的问题

ruby - ruby 中的空正则表达式匹配什么?