-1
votes

Perl Split Fonction avant Regex, pas après

$VAR1 = [
          ' ',
          '30th Mar 2020 5:53:18 pm Elvis Presly: BJ: Bloomberg Runs',
          '30th Mar 2020 5:53:27 pm Elvis Presly: DS: ICE DATA = INC',
          '101848366130th',
          ' Mar 2020 6:42:43 pm Boris Putin: Cortese\'s ICE logs is for the Bloomberg Runs 
issue',
          '30th Mar 2020 6:43:

0 commentaires

3 Réponses :


3
votes

Vous avez également besoin nd code> pour "secondaire".

$VAR1 = [
          ' ',
          '30th Mar 2020 5:53:18 pm',
          'Basant Jain: BJ: Bloomberg Runs',
          '30th Mar 2020 5:53:27 pm',
          'Basant Jain: DS: ICE DATA = INC1018483661',
          # ...
          '31st Mar 2020 8:30:36 am',
          'Kishan Bholah: WJ: RE: Bulking Booking P&L - INC1018498292',
          '31st Mar 2020'
        ];


0 commentaires

4
votes

Lorsque vous utilisez Split, vous devez spécifier ce qui est entre em> les bits que vous souhaitez conserver. Dans ce cas, le séparateur est la chaîne de 0 longueur suivie d'une date. Pour cela, vous pouvez utiliser les éléments suivants:

split /(?=\d+(?:th|st|nd|rd))/, $str 


0 commentaires

-1
votes

Il n'est pas clair pourquoi Split est utilisé par OP.

Comme alternative substitut peut être utilisé pour injecter nouvelle ligne avant les dates.

Split a été ajouté pour placer des lignes dans une matrice lignes pour obtenir le résultat souhaité. xxx


6 commentaires

J'ai revenu à la version originale - ce qui n'est pas entièrement plainte comme pour une raison quelconque de la saisie de données sera 13nd ou 16 alors ce sera accepté.


Noeudeuse de captures pour rien, il ralentit des choses pour rien. (th | st | nd | rd) => (?: th | st | nd | rd)


En parlant d'éviter les captures, les captures sont tout à fait inutiles ici: s / (? = \ D {1,2} (th | st | nd | rd) \ w {3} \ d \ n / g pas sûr si cela est plus rapide


@IKEGAMI - Il devrait s'agir d'un énorme fichier pour détecter même lenteur dans le traitement. Mais comme Conseil C'est un bon conseil.


Pour moi, il est plus important pour la lisibilité du code; Si je lis le code qui capture, je devrais pouvoir s'attendre à bien utiliser les valeurs capturées


@ysth, je suis tout à fait d'accord