Tôi có văn bản như thế này:perl regex để trích xuất các khối multiline
00:00 stuff 00:01 more stuff multi line and going 00:02 still have
Vì vậy, tôi không có một kết thúc khối, chỉ cần một sự khởi đầu khối mới.
Tôi muốn đệ quy có được tất cả các khối:
1 = 00:00 stuff 2 = 00:01 more stuff multi line and going
vv
Đoạn mã bên dưới chỉ mang lại cho tôi điều này:
$VAR1 = '00:00';
$VAR2 = '';
$VAR3 = '00:01';
$VAR4 = '';
$VAR5 = '00:02';
$VAR6 = '';
Tôi đang làm gì sai?
my $text = '00:00 stuff
00:01 more stuff
multi line
and going
00:02 still
have
';
my @array = $text =~ m/^([0-9]{2}:[0-9]{2})(.*?)/gms;
print Dumper(@array);
Parens không chụp của bạn '(? ...)' là dư thừa ở đây, như '(=?. ..) 'cũng có thể sử dụng luân phiên. Ngoài ra, tôi nhận thấy bạn vẫn chưa viết mã tuân thủ nghiêm ngặt, mà trong cuốn sách của tôi là xấu, vì nó khuyến khích thực hành xấu. – TLP
Tôi đã giải thích đầy đủ về ** sử dụng (ing) nghiêm ngặt ** trong chủ đề khác. Bạn có phiền ngừng làm việc này không? – tuxuday
Vâng, tôi quan tâm. Bạn có phiền khi ngừng đăng mã không nghiêm ngặt không? Đây là một môi trường học tập, bạn không mất chi phí * bất cứ thứ gì * để đăng mã khuyến khích thực hành tốt, bây giờ phải không? – TLP