我正在尝试扫描文档并确定文档各部分的开始和结束位置。有时,文档有一个目录,其中列出了我不想捕获 TOC 的页码,因为它不能识别文档的一部分。我已经搞砸了一段时间,并且被困在了一些事情上。我似乎无法避免使用行号从目录中捕获行
这是正则表达式
verbose_item_pattern_3 = re.compile(r"""
^ # begin match at newline
\t* # 0-or-more tabspace
[ ]* # 0-or-more blank space
I # a capital I
[tT][eE][mM] # one character from each of the three sets this allows for unknown case
\t* # 0-or-more tabspace
[ ]* # 0-or-more blankspace
\d{1,2} # 1-or-2 digits
[.]? # 0-or-1 literal .
\(? # 0-or-1 literal open paren
[a-e]? # 0-or-1 letter in the range a-e
\)? # 0-or-1 closing paren
.* # any number of unknown characters so we can have words and punctuation
[^0-9] # anything but [0-9]
$ # 1 newline character
""", re.VERBOSE|re.MULTILINE)
这是我不想捕获的行的示例
test_string='\nItem 6. TITLE ITEM 6..................................................25\n'
这是我想要捕捉的一个例子
test_string='\nItem 6. TITLE ITEM 6 maybe other words here who knows \n'
但是当我跑步时
re.findall(verbose_item_pattern_3,test_string)
结果是
['Item 6. TITLE ITEM 6..................................................25\n']
现在对我来说有趣的是,如果我的测试字符串是这个
test_string='PART I\nItem 1. TITLE ITEM 1...................................................1\nItem 2. TITLE ITEM 2..................................................21\n'
并使用 re.findall(verbose_item_pattern_3,test_string) 运行它
结果更接近我想要的但仍然不正确
['Item 2. TITLE ITEM 2..................................................21\n']
不应该有任何东西被捕获