Voici un problème intéressant. Est-il possible de diviser une chaîne sur la dernière regex correspondante uniquement?Perl: Y a-t-il un moyen de séparer le dernier regex uniquement?
examiner la liste suivante des têtes de colonnes de mon fichier de données (qui se lit sur la même ligne, étant languette séparée):
Frequency Min
Frequency Avg
Frequency Max
Voltage L1 Min
Voltage L1 Avg
Voltage L1 Max
Active Power L1 Min
Active Power L1 Avg
Active Power L1 Max
À l'heure actuelle, mes données sont ajoutées sous forme de tableau pour chaque colonne (par exemple @{ $data{Frequency Min} }
, @{ $data{Active Power L1 Avg} }
). Il serait intéressant de pouvoir créer des sous-hachages basés sur les mots clés Min, Max et Avg (par exemple, @{ $data{Frequency}{Min} }
, @{ $data{Active Power L1}{Avg}
), raison pour laquelle je souhaite diviser le dernier espace de chaque en-tête.
Notez que la situation est rendue plus difficile par le fait qu'un nombre quelconque d'espaces blancs peut se produire avant que la correspondance finale ne soit trouvée.
J'ai pensé à inverser la chaîne, en effectuant la scission une fois puis en inversant les deux chaînes séparément, mais c'est trop compliqué à mon goût. Existe-t-il une façon plus simple de faire cela?
Pouvez-vous expliquer ce que fait la regexp (*.)? – Zaid
Le. * Correspond à tout ("n'importe quel nombre de n'importe quel caractère"). C'est gourmand, et correspondra autant que possible. Le \ S + correspond à tous les caractères non-espace ("au moins un caractère non espace"); étant également gourmand, cela signifie qu'en pratique, le \ S + ne correspondra qu'au dernier jeton, car le. * aura pris tous les jetons précédents. –
. * Correspond à n'importe quelle chaîne de caractères, et les parens qui l'entourent font de cette partie de l'expression le premier membre de la liste renvoyé par l'expression de correspondance. – mkb