in reply to Dynamic matching
G'day flybd5,
Welcome to the monastery.
Given you have two distinct formats, I'd probably just use two different regexes.
#!/usr/bin/env perl -l use strict; use warnings; my @strings = ( '8 changes by 4 users: user1 user2 user3 user4', '1 change by user1', ); for (@strings) { my ($changes, $users, @user_list); if (/:/) { /^(\d+)\D+(\d+)[^:]+:\s+(.+)/; $changes = $1; $users = $2; @user_list = split /\s+/ => $3; } else { /^(\d+) change by (\w+)/; $changes = $1; $users = 1; @user_list = ($2); } print "changes=$changes; users=$users; user_list: @user_list"; }
Output:
changes=8; users=4; user_list: user1 user2 user3 user4 changes=1; users=1; user_list: user1
-- Ken
|
|---|