[英]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.