我有這樣的文字:
05/06/21 05/06/21 Margin Div/Int - Income ACTIVISION BLIZZARD INC
COM
Payable: 05/06/2021
QUALIFIED DIVIDENDS 23.50
ATVI - 0.00 23.50 (9,425.77)
05/13/21 05/13/21 Margin Div/Int - Income APPLE INC
COM
Payable: 05/13/2021
QUALIFIED DIVIDENDS 6.16
AAPL - 0.00 6.16 (9,419.61)
05/28/21 05/28/21 Margin Div/Int - Income STARBUCKS CORP
COM
Payable: 05/28/2021
QUALIFIED DIVIDENDS 18.00
SBUX - 0.00 18.00 (9,401.61)
05/28/21 05/28/21 Margin Div/Int - Expense MARGIN INTEREST CHARGE
Payable: 05/28/2021
- - 0.00 (73.03) (9,474.64)
我想提取單個記錄,例如:
05/06/21 05/06/21 Margin Div/Int - Income ACTIVISION BLIZZARD INC
COM
Payable: 05/06/2021
QUALIFIED DIVIDENDS 23.50
ATVI - 0.00 23.50 (9,425.77)
和
05/13/21 05/13/21 Margin Div/Int - Income APPLE INC
COM
Payable: 05/13/2021
QUALIFIED DIVIDENDS 6.16
AAPL - 0.00 6.16 (9,419.61)
和
05/28/21 05/28/21 Margin Div/Int - Expense MARGIN INTEREST CHARGE
Payable: 05/28/2021
- - 0.00 (73.03) (9,474.64)
這里每條記錄的模式應該以日期開始(\d /\d /\d)并以(\n\n\d /\d /\d)
我試過像(re.findall(r'\d /\d /\d(.*?)\n\n\d /\d /\d ',a))。但它沒有按預期作業
uj5u.com熱心網友回復:
你可以匹配
. ?(?=\s*(?:\d{2}\/\d{2}\/\d{2} ){2}|$)
設定了“g”(“全域”)和“s”(“單行”或“點所有”)標志。's' 使句點匹配所有字符,包括行終止符。
演示
正則運算式可以分解如下。
. ? # match one or more chars, lazily
(?= # begin a positive lookahead
\s* # match zero or more whitespaces
(?: # begin a non-capture group
\d{2}\/\d{2}\/\d{2}[ ] # match a date string followed by a space
){2} # end the non-capture group and execute it twice
| # or
$ # match the end of the string
) # end positive lookahead
uj5u.com熱心網友回復:
您可以將其用作基礎并進行更改以獲得您需要的確切內容:
\d \/\d \/\d (.*?)\\n\\n(\s \d \/\d \/\d |$)
您可以在演示中試用。
我所做的更改如下:
\n變成\\n.\n\n示例文本中的 和 日期之間有一個空格。我在正則運算式中添加了它。- 正則運算式中日期的年份部分丟失
。我已經補充說 - 示例中的最后一部分最后不包含日期。那張支票已包括在內。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376331.html
