python - 正则表达式 - 抓取带有句点 1.1、1.1.1 等的部分

标签 python regex parsing

我正在尝试使用正则表达式从具有编号标题的文档部分之间获取文本。该文档有目录和章节标题,章节编号中带有句点。例如:1. 简介,1.1 某事,1.1.1 其他 我能够很好地解析 TOC,只得到节号(1.1、1.1.1 等),但未能尝试解析这两个数字之间的文档文本。

考虑以下内容(假设文档文本只是一个大字符串):

1.1 Introduction
There are some sentences in here that I want and I want to do other things with them. There could be hundreds of sentences, who cares.
1.1.1 Something Else
This is where we talk about something else in life.
...
5.1.1 Conclusion

例如,我尝试了以下方法来获取 1.1 和 1.1.1 之间的文本以及此类的一些变体,但似乎卡住了。

(?s)1\.0(.*)1\.1

如果文档中只有第 1.0 和 1.1 节,则此方法有效,但由于我没有那么奢侈....非常感谢任何帮助。

最佳答案

使用 re.split 使用正则表达式拆分数字,如下所示。

^\d+(?:\.\d+)*

这匹配一位或多位数字 \d+ 后跟零次或多次出现的子模式,句点后跟一位或多位数字 (?:\.\d+)*.

结果列表的项目是数字之间的文本,包括标题行本身的文本。

如果您也需要节号,请在正则表达式中使用捕获模式(在上面添加括号)。然后列表将包含节号和它们之间的文本。偶数项是中间的文本,奇数项是节号。

关于python - 正则表达式 - 抓取带有句点 1.1、1.1.1 等的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73709821/

相关文章:

python - 仅在 scikit-learn 中的特征子集上使用 PCA 的管道

python - Django-avatar 序数不在范围内(128)

java - 在java中替换全部("match","replace")

regex - 有没有办法测试我的正则表达式是否容易受到灾难性回溯的影响?

html - 推荐用于flex项目的as3中的html解析器库

android - 如何确保解析数组时不会返回重复的 JSON 数据?

java - 如何解析java源代码而不存储空行?

python - 如何让子类使用父类的默认值?

python - 如何在 gui 中放置 python gglot 图?

regex - 几个表达式中的 Perl & Sed 字符串替换