簡體   English   中英

正則表達式匹配兩個字符串之間的文本

[英]Regular expressions matching text between two strings

有點像編碼和從事個人項目以了解更多信息的初學者。 我將一些個人陳述轉換為文本,並嘗試同時進行回顧和展望。 我有一大段文本,格式如下:

> dec 15 dec 16 transaction info#1 ab74537812345678951843053$16.94
\ndec 16 dec 17 transaction info#2 cd74500123456789617492488$56.50

我正在嘗試做一個 findall 來選擇第一個日期之后和 20 位以上的長字符串之前的所有匹配項。 例如,對於第一行,它將匹配:

交易信息#1 ab

這是我目前擁有的當前表達式,它匹配我正在尋找的內容,但它也匹配一堆空白: (?<=.{14})(?:.*?)(?=\d{23,}) 我想我可以通過一些額外的編碼刪除 findall 列表中出現的空白,但不確定這是最有效的方法。

在這種情況下,我傾向於匹配整行,並使用我真正想要的 select 組。 這是您在regex101上提供的示例輸入

使用您提供的示例,我想出了以下表達式來實現該目的:

^(?:(?:[a-z]{3}\s*[0-9]{1,2}\s*){2})(.*)(?:[0-9]{23}\$.*)$

這是使用標志 global ( g ) 和 multiline ( m ) 以便它返回所有匹配項並捕獲多行。

這利用非捕獲組來隔離您實際想要閱讀的行部分。 此外,通過使用“字符串開頭”和“字符串結尾”標記( ^... $ ),任何與整個模式不匹配的行都將根本不匹配。

根據您的示例,此模式匹配兩行,每行中的第一個捕獲組如下:

transaction info#1 ab
transaction info#2 cd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM