我試圖掃描文檔並確定文檔的哪些部分開始和結束。有時,文檔有一個目錄列表,我不想捕獲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)
結果更接近我想要的,但sti LL不正確
['Item 2. TITLE ITEM 2..................................................21\n']
不應該有什麼捕獲
請注意如何捕獲換行符。 –
您能否解釋爲什麼您的示例不應被捕獲?什麼不應該匹配? – acjay
我似乎無法理解所需的輸出應該是什麼。看到一個更具包容性的源代碼輸入片段,展示它做錯了什麼,並展示它應該做什麼會更有幫助。 – jdi