python - 在 Python 中使用正则表达式检查章节编号?
问题描述
如何使用正则表达式正确检查章节编号?输入文档可以是常用格式的论文或书籍。我想用下面的示例输入将每个章节/章节编号及其名称/标题分开,以避免虚假输入。问题可能是正则表达式端的“点”字符。可能是特殊字符。有什么建议可以解决这个问题吗?
import re
testContent = ["1. Name Chapter Name", "1.1. Section name abcdefg",
"1.1.1. Subsection tests", "1.2. aaaaaaaaaa", "2. Chapter 2",
"12 ml fake input", "section 3.3 fake input"]
seperated = {}
for line in testContent:
match = re.search(r'^[1-9.]+', line)
if match:
rest = re.sub(match.group(), '', line)
seperated.update({match.group() : rest})
print(seperated)
结果是:
{'1.': ' Name Chapter Name', '1.1.': ' Section name abcdefg', '1.1.1.': ' Subsection tests', '1.2.': ' aaaaaaaaaa', '2.': ' Chapter 2', '12': ' ml fake input'}
解决方案
试试这个正则表达式:
for test in testContent:
match = re.search(r'^([1-9]\.)+',test)
print(match)
输出:
<_sre.SRE_Match object; span=(0, 2), match='1.'>
<_sre.SRE_Match object; span=(0, 4), match='1.1.'>
<_sre.SRE_Match object; span=(0, 6), match='1.1.1.'>
<_sre.SRE_Match object; span=(0, 4), match='1.2.'>
<_sre.SRE_Match object; span=(0, 2), match='2.'>
None
None
排除虚假输入...
推荐阅读
- android - 如何从我上传到firebase存储的文件中获取文件
- numbers - 我有一个字符串和一个数字。我需要找到第一个包含与数字长度相同的字符的子字符串
- c# - C# - “开关”功能的问题。不将值写入变量
- r - 使用 Tidyverse 为每个用户/参与者输出一系列汇总统计表
- javascript - 反应我希望在滚动到底部时显示 console.log()
- python - 如何计算在按 /start 之前访问 Telegram Bot 的用户?
- .net-5 - 在 Windows server 2012 R2 上构建 .net 5
- r - 在 ggpubr 中包装部分粗体和斜体的主标题 - ggerrorplot
- python - pip install,安装其他python版本的包
- c# - ASP.NET Core 中的响应缓存在客户端还是服务器端工作?