REGEX - 如何从文本中提取特定行数

REGEX - how to extract a specific number of rows from a text

我需要找出如何从文本中提取特定行数(我想提取的行数是可变的)。

在这种情况下,我想提取从 07/06/2021SOLD FINAL ZI 1

的任何内容

文本

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccccccccccccccccccc

07/06/2021 P2P  00.00

T d r 0000 R A cc  R A
r : aadr

REF. ------------------

P l p  00.00

P XX/XX/XXXX 0000000000 :00000000000 P R R

A B OO 0000000000 v e: 00.00 n 0000000000

c t 0.00 n

REF. ------------------

P2P  00.00

T d r  0000 R A c R A

rr : Saracie

REF. ------------------

P2P  00.00

T d r 0000 A. B c R A rr : Sanity

REF. ------------------

P l p   00.00

P XX/XX/XXXX 0000000000  00000000000 P R R

D OO 0000000000 V T: 00.00 n 0000000000 c

T 0.00 n

REF. ------------------

XX/XX/XXXX RULAJ ZI 1 3

SOLD FINAL ZI 1

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccccccccccccccccccc

在正则表达式中,我从 \n(\d{2}/\d{2}/\d{4}) 开始以获得数据 07/06/2021,但我不知道如何提取其余部分。

提前致谢!

您好,欢迎来到 Whosebug,

您的问题可能无法解决您的实际问题。你真的想“提取特定数量的行”吗?这可能是 XYProblem.

我喜欢 将所有内容提取到 SOLD FINAL:
^(\d{2}\/\d{2}\/\d{4})[\s\S]+SOLD FINAL.
我喜欢这个,因为我猜你知道最后的单词而不是行数。但是我们不能说。

无论如何要给你问题的答案(因为你的实际问题可能看起来与我们预期的不同)你可以使用这个正则表达式: ^(\d{2}\/\d{2}\/\d{4}).*$(\n^.*$){n}

^                     --> look at the beginning of a row
(\d{2}\/\d{2}\/\d{4}) --> your regex for the date
.*$                   --> also take the rest of the line
(\n^.*$){n}           --> take the next n lines
     \n --> the line break
     ^  --> again: beginning of a new line
     .* --> as much characters as needed to match the next (non greedy)
     $  --> the end of a line
     {n}--> the number of lines you want to extract (replace n ;) )