罗马人的正确正则表达式位于 Python 中的前面和后面



以下是我需要重新搜索的原始文本(存储在名为"table_t"的变量中):

目录 I. 介绍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 1 二. 事实方面 . 2 一. 《清洁空气法》 . 3 B. 美国环保署的汽油规则 . 3 1. 基线的建立 . 3 2. 重新配制的汽油 . 4 3. 常规汽油(或"反倾销规则"). . 4 C. 1994年5月的提案 .. 5 三.主要论点 . 5 安培。 常规。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 B. 关税及贸易总协定 .. 6 1. 第一条 最惠国待遇 . . 6 2. 第三条 关于国内税收和监管的国民待遇 7 a) 第三条第4款 7 b) 第三条第1款 14 3. 第二十条 - 一般例外 . 15 4. 第二十条(b)款 . . 15 a) "保护人类、动物和植物的生命或健康" . 15 b) "必要" . 15 5. 第二十条(四)款 . 21 6. 第二十条(g)款 . 22 a) "与保护可耗尽的自然资源有关......" 22 b) "...与限制国内生产或消费同时生效"...... 23 7. 第二十条序言 . 23 8. 第二十三条 作废和减值 . 25 '

我想匹配 ['I.简介 ...1' , 'II.事实方面...2','III.主要论点。5'],采用"罗马+标题+圆点+页码">的形式

所以我写下了这样的代码:

romans = ["I.", "II.", "III.", "IV.", "V.", "VI.", "VII.", "VIII.", "IX.", "X."]
for i in range(0,len(romans)):
try:
print(i)
print(re.search(r"((?<={})(.*)(d))(?!{})".format(romans[i], romans[i+1]),table_t).group())
except:
pass

但它保持这样的回报:

0介绍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 1 二. 事实方面 . 2 一. 《清洁空气法》 . 3 B. 美国环保署的汽油规则 . 3 1. 基线的建立 . 3 2. 重新配制的汽油 . 4 3. 常规汽油(或"反倾销规则"). . 4 C. 1994年5月的提案 .. 5 三.主要论点 . 5 安培。 常规。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 B. 关税及贸易总协定 .. 6 1. 第一条 最惠国待遇 . . 6 2. 第三条 关于国内税收和监管的国民待遇 7 a) 第三条第4款 7 b) 第三条第1款 14 3. 第二十条 - 一般例外 . 15 4. 第二十条(b)款 . . 15 a) "保护人类、动物和植物的生命或健康" . 15 b) "必要" . 15 5. 第二十条(四)款 . 21 6. 第二十条(g)款 . 22 a) "与保护可耗尽的自然资源有关......" 22 b) "...与限制国内生产或消费同时生效"...... 23 7. 第二十条序言 . 23 8. 第二十三条 作废和减值 . 25 1事实方面 . 2 一. 《清洁空气法》 . 3 B. 美国环保署的汽油规则 . 3 1. 基线的建立 . 3 2. 重新配制的汽油 . 4 3. 常规汽油(或"反倾销规则"). . 4 C. 1994年5月的提案 .. 5 三.主要论点 . 5 安培。 常规。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 B. 关税及贸易总协定 .. 6 1. 第一条 最惠国待遇 . . 6 2. 第三条 关于国内税收和监管的国民待遇 7 a) 第三条第4款 7 b) 第三条第1款 14 3. 第二十条 - 一般例外 . 15 4. 第二十条(b)款 . . 15 a) "保护人类、动物和植物的生命或健康" . 15 b) "必要" . 15 5. 第二十条(四)款 . 21 6. 第二十条(g)款 . 22 a) "与保护可耗尽的自然资源有关......" 22 b) "...与限制国内生产或消费同时生效"...... 23 7. 第二十条序言 . 23 8. 第二十三条 作废和减值 . 25 2 主要论点 . 5 安培。 常规。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 B. 关税及贸易总协定 .. 6 1. 第一条 最惠国待遇 . . 6 2. 第三条 关于国内税收和监管的国民待遇 7 a) 第三条第4款 7 b) 第三条第1款 14 3. 第二十条 - 一般例外 . 15 4. 第二十条(b)款 . . 15 a) "保护人类、动物和植物的生命或健康" . 15 b) "必要" . 15 5. 第二十条(四)款 . 21 6. 第二十条(g)款 . 22 a) "与保护可耗尽的自然资源有关......" 22 b) "...与限制国内生产或消费同时生效"...... 23 7. 第二十条序言 . 23 8. 第二十三条 作废和减值 . 25 3 4 5 6 7 8 9

在给定罗马字母的相应页码麻木的页码出现后附加了太多尾巴。

哪一点出错了?

在匹配TITLE + DOT(S)时使用非贪婪正则表达式

import re
table_t = """' Table of Contents I. INTRODUCTION .................................... 1 II. FACTUAL ASPECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 A. The Clean Air Act . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 B. EPA's Gasoline Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Establishment of Baselines . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Reformulated Gasoline . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Conventional Gasoline (or "Anti-Dumping Rules") . . . . . . . . 4 C. The May 1994 Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 III. MAIN ARGUMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A. General .................................... 5 B. The General Agreement on Tariffs and Trade . . . . . . . . . . . . . . . . 6 1. Article I - General Most-Favoured-Nation Treatment . . . . . . . 6 2. Article III - National Treatment on Internal Taxation and Regulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 a) Article III:4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 b) Article III:1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3. Article XX - General Exceptions . . . . . . . . . . . . . . . . . . . . 15 4. Article XX(b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 a) "Protection of Human, Animal and Plant Life or Health" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 b) "Necessary" . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5. Article XX(d) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6. Article XX(g) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 a) "Related to the conservation of exhaustible natural resources..." . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 b) "... made effective in conjunction with restrictions on domestic production or consumption" . . . . . . . . . . 23 7. Preamble to Article XX . . . . . . . . . . . . . . . . . . . . . . . . . . 23 8. Article XXIII - Nullification and Impairment . . . . . . . . . . . . 25 '"""
for i in range(0, len(romans)):
try: #s+ : one or more white spaces(re.s) 
#[] bracket denotes character group 
#* preceding one could be matched multiple times 
#. means real dot(literally dot!)
print("{}th trial - for roman {}".format(i,romans[i]))  
print(re.search(r"((?<={})s+(?P<name>[A-Z .]*?)(d))".format(romans[i]), toc).group())
except:
pass

输出:

0th trial - for roman I.
INTRODUCTION          ....................................                                  1
1th trial - for roman II.
FACTUAL ASPECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     2
2th trial - for roman III.
MAIN ARGUMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      5
3th trial - for roman IV.
4th trial - for roman V.
5th trial - for roman VI.
6th trial - for roman VII.
7th trial - for roman VIII.
8th trial - for roman IX.
9th trial - for roman X.
. . . . . . . . . . . . . . . . . . . . . . . . . .     2

这是输出

最新更新