」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在Python中使用正規表示式來匹配多行塊?

如何在Python中使用正規表示式來匹配多行塊?

發佈於2024-11-04
瀏覽:161

How to Match Multiline Blocks in Python Using Regular Expressions?

使用正規表示式來搭配多行區塊

使用Python 的正規表示式來符合跨多行的文字時,您可能會遇到困難。考慮以下範例文本:

some Varying TEXT

DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF
[more of the above, ending with a newline]
[yep, there is a variable number of lines here]

(repeat the above a few hundred times).

目標是捕獲兩個組成部分:

  • “some Varying TEXT”
  • 所有大寫行位於兩行在它下面(不包括任何換行符)

嘗試了幾種方法但沒有成功:

re.compile(r"^>(\w )$$(\n[.$] )^$", re.MULTILINE) # Capture both parts
re.compile(r"([^>][\w\s] )$", re.MULTILINE|re.DOTALL) # Just textlines

要解決此問題,請使用以下正規表示式:

re.compile(r"^(. )\n((?:\n. ) )", re.MULTILINE)

請記住,錨點「^ ”和“$”不符換行符。因此,在多行模式下,「^」在換行符之後,「$」在換行符之前。

此外,請注意各種換行符號格式。對於可能包含換行符號、回車符號或兩者的文本,請使用以下更具包容性的正規表示式:

re.compile(r"^(. )(?:\n|\r\n?)((?:(?:\n|\r\n?). ) )", re.MULTILINE)

這裡不需要DOTALL 修飾符,因為點已經排除了換行符。

最新教學 更多>
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-16
  • MySQL InnoDB 是否有直接相當於 MS SQL Server 中重建索引的功能?
    MySQL InnoDB 是否有直接相當於 MS SQL Server 中重建索引的功能?
    在MySQL InnoDB 中重建索引和更新統計資訊在MS SQL Server 這樣的資料庫中,更新統計資料並重建索引以獲得最佳查詢是很常見的表現。 MySQL InnoDB 是否提供類似的功能? MySQL InnoDB:資料分析與最佳化MySQL InnoDB 沒有與 MS SQL Serve...
    程式設計 發佈於2024-11-16
  • 如何在不使用「HttpServletRequest.setParameter」的情況下修改 Servlet 過濾器中的請求參數?
    如何在不使用「HttpServletRequest.setParameter」的情況下修改 Servlet 過濾器中的請求參數?
    使用Servlet 過濾器更改請求參數:巧妙且實用的解決方案ServletRequest.setParameter 可能在Java 的庫中明顯缺失,這讓開發人員陷入困境無縫修改請求參數的困境。本文深入探討了這項挑戰並揭示了可行的解決方案。 優雅的方法:修改 Servlet拯救的一個途徑在於修改原始 ...
    程式設計 發佈於2024-11-16
  • 如何在 Golang 中使用 Gomultipart 建立多部分 HTTP 請求?
    如何在 Golang 中使用 Gomultipart 建立多部分 HTTP 請求?
    如何在Go中使用multipartGolang中的multipart是一個用於創建多部分HTTP請求的強大工具。這在發送包含文字和文件內容的資料時特別有用。 解決方案要建立多部分錶單請求,請依照下列步驟操作:實例化一個 bytes.Buffer 和一個 multipart.Writer 物件。 使用...
    程式設計 發佈於2024-11-16
  • 如何模擬方法以傳回 Java 中收到的參數?
    如何模擬方法以傳回 Java 中收到的參數?
    傳回接收到的參數的模擬方法在物件導向程式設計中,像Mockito 這樣的類比框架用於建立模擬對象用於測試目的的真實物件的行為。測試中的一個常見場景是需要讓模擬方法傳回傳遞給它的相同參數。 Mockito 和Lambda 表達式(Mockito 1.9.5 和Java 8)對於Mockito 1.9....
    程式設計 發佈於2024-11-16
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-16
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-16
  • 一種僅使用 CSS 即時測試 HTML 和 CSS 的實用方法。
    一種僅使用 CSS 即時測試 HTML 和 CSS 的實用方法。
    最近,我公開了一個我為創建放射狀設計而開發的 CSS 框架。在開發過程中,我遇到了一些挑戰,包括測試不同的功能。我注意到 CSS linter 和其他工具不允許我了解為什麼某些東西不起作用,即使沒有基本錯誤。另一個典型的 CSS 問題是如何在不同的瀏覽器之間共用它。幸運的是,我發現某些新的 CSS ...
    程式設計 發佈於2024-11-16
  • 完全類型化、簡單的 React Context API 範例
    完全類型化、簡單的 React Context API 範例
    不必照顧上下文類型的技巧很簡單! 如果您使用上下文 API,那麼一個問題就是其類型的照顧。 另一個是必須使用多個導入才能在需要時使用它。 透過這個範例,我們解決了這兩個問題,並使 React Context API 的使用變得快速、簡單。 複製貼上範例 複製、貼上,然後只需將...
    程式設計 發佈於2024-11-16
  • 如何深入了解 JavaScript 本機函數的內部運作原理?
    如何深入了解 JavaScript 本機函數的內部運作原理?
    訪問JavaScript 本機函數的內部工作原理在Chrome 或Firefox 等瀏覽器中檢查JavaScript 本機函數時,您可能會遇到神秘訊息「本機程式碼。」這種神秘的回答讓您想知道這些內建函數的隱藏工作原理。 「本機代號」是什麼意思? 本機程式碼是指在低階語言,例如 C 或 C,而不是 J...
    程式設計 發佈於2024-11-16
  • 為什麼我可以在評估程式碼中捕獲語法錯誤,但在原始程式碼中卻不能?
    為什麼我可以在評估程式碼中捕獲語法錯誤,但在原始程式碼中卻不能?
    處理 Eval 程式碼中的語法錯誤使用 Python 程式碼時,您可能會遇到使用 eval 函數動態求值的程式碼中出現語法錯誤的情況。雖然可以捕獲此類錯誤,但原始程式碼本身的語法錯誤卻並非如此。 為什麼會有差異? 要理解這種行為,記住以下內容至關重要: Python 中的執行順序。當程式碼執行時,P...
    程式設計 發佈於2024-11-16
  • Python 內建的資料結構的 len() 函數有多有效率?
    Python 內建的資料結構的 len() 函數有多有效率?
    了解Python 內建函數len() 的計算成本len() 函數是Python 中的多功能工具計算各種資料結構的長度,包括字串、列表、元組、字典和集合。然而,了解使用此函數優化程式碼效能的成本至關重要。 恆定時間複雜度:O(1)對於所有內建資料結構在問題(列表、元組、字串、字典)中提到,len ()...
    程式設計 發佈於2024-11-16
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1和$array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建構一...
    程式設計 發佈於2024-11-16
  • 「易失性」在 C++11 多執行緒中仍然相關嗎?
    「易失性」在 C++11 多執行緒中仍然相關嗎?
    C 11 中的Volatile 變量C 11 中的Volatile 變量C 11 標準中多線程機器模型的引入引發了有關volatile 行為的問題變量,傳統上用於防止可能導致並發環境中未定義行為的最佳化。 在C 98/03 中,內存模型中缺乏對多線程的識別意味著編譯器可以優化無法讀取易失性變量,從而...
    程式設計 發佈於2024-11-16
  • 為什麼 Visual Studio 2010 中 x86 和 x64 的浮點運算不同?
    為什麼 Visual Studio 2010 中 x86 和 x64 的浮點運算不同?
    x86 與x64 之間的浮點算術差異在Visual Studio 2010 中,x86 與x64 版本之間的浮點算術存在明顯差異當比較某些表達式的值時出現。這種差異體現在以下程式碼:float a = 50.0f; float b = 65.0f; float c = 1.3f; float d =...
    程式設計 發佈於2024-11-15

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3