ドキュメントをスキャンして、ドキュメントのセクションの開始位置と終了位置を特定しようとしています。ドキュメントにページ番号がリストされた目次がある場合があります。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']
何もキャプチャされないはずです