ursus contionabundo: Nach Deinen Ergänzungern verbesserte Lösung

Beitrag lesen

Ausdrucks, der mit AB anfängt und dann ein weiteres Zeichen (Buchstabe oder Ziffer) hat und anschließend eine oder beliebig viele Ziffern bis zu einem Leerzeichen enthält.

Aha. Das ist schon sehr viel genauer als mir bisher bekannt war:

<?php

$pattern[] = '^.*AB[A-Z0-9][0-9]+ (.*) ([0-9]+) ([0-9]+) (.*) ([0-9.,]*)$';
$pattern[] = '^.*AB[A-Z0-9][0-9]+ (.*) ([0-9]+) (.*) ([0-9.,]*)$';
$pattern   = '/' . implode('|', $pattern ) . '/';

$rows = file('/tmp/data.txt');
foreach ( $rows as $row ) {
	$row = trim( $row );
	
	preg_match( $pattern, $row, $arr );
	
	$arrE=[];
	foreach($arr as $item) {
			if ( $item ) { $arrE[] = $item; }
	}
	
	if ( 5 == count( $arrE ) )  {
		$arrE[5] = $arrE[4];
		$arrE[4] = $arrE[3];
		$arrE[3] = $arrE[2];
		$arrE[2] = false;
	}
	
	print_r( $arrE );
}

Ausgabe nach Test mit Deinen Daten:

Array
(
    [0] => AB0006777 Lore Ipsum 25 ABC 3,72
    [1] => Lore Ipsum
    [2] => 
    [3] => 25
    [4] => ABC
    [5] => 3,72
)
Array
(
    [0] => AB09899 AB00067127 At vero, eos et 2 1 XYZ 13,11
    [1] => At vero, eos et
    [2] => 2
    [3] => 1
    [4] => XYZ
    [5] => 13,11
)
Array
(
    [0] => AB0007711 CD0TZUUZ AB899979 At vero eos et 10 100 XYZ 1.223,50
    [1] => At vero eos et
    [2] => 10
    [3] => 100
    [4] => XYZ
    [5] => 1.223,50
)
0 71

Nochmal Regex gesucht

Pit
  • regex
  1. 0
    ursus contionabundo
    1. 0
      ursus contionabundo
    2. 0
      Pit
      1. 0
        Matthias Apsel
        1. 0
          Pit
          1. 0
            ursus contionabundo
            1. 0
              Pit
              1. 0
                Rolf B
                1. 0
                  Pit
                  1. 0
                    Rolf B
                    1. 0
                      Pit
                  2. 0
                    Rolf B
                    1. 0
                      Pit
                      1. 0
                        Rolf B
                        1. 0
                          Matthias Apsel
                          1. 0
                            Pit
                            1. 0
                              Rolf B
                              1. 0
                                Pit
                                1. 0

                                  So geht es fast...

                                  Pit
                                  1. 0

                                    Diese Zeile krieg ich nicht gematcht

                                    Pit
                                    1. 0
                                      ursus contionabundo
                                      1. 0
                                        Pit
                                        1. 0
                                          Self-Nachtwächter
                                          • programmiertechnik
                                          • programmplanung
                                          • regex
                                          1. 0
                                            Rolf B
                                            1. 0
                                              Pit
                                              1. 0

                                                Lösungsalternative: pdftotext

                                                ursus contionabundo
                                          2. 0
                                            Pit
                                            1. 0

                                              Diese Zeile krieg ich nicht gematcht - weitere Vereinfachung

                                              ursus contionabundo
                                    2. 0
                                      Gunnar Bittersmann
                                      1. 0
                                        Pit
                                        1. 0
                                          Gunnar Bittersmann
                                          1. 0
                                            Pit
                                            1. 0
                                              Rolf B
                                              1. 0
                                                Pit
                                                1. 0
                                                  MudGuard
                                                2. 0
                                                  Pit
                                                  1. 1
                                                    Pit
                        2. 0
                          Pit
                        3. 0
                          Pit
                          1. 0
                            Pit
                            1. 0
                              Rolf B
                              1. 0
                                Pit
                  3. 0

                    Nach Deinen Ergänzungern verbesserte Lösung

                    ursus contionabundo
                    1. 0
                      Pit
                      1. 0
                        ursus contionabundo
                        1. 0
                          Pit
                          1. 0

                            Tips zur Fehlersuche

                            ursus contionabundo
                            • php
                            1. 0
                              Pit
                              1. 0

                                Du bist nicht allein ...

                                ursus contionabundo
                                1. 0
                                  Pit
                  4. 0
                    Gunnar Bittersmann
                    1. 0
                      Pit
                      1. 0
                        Gunnar Bittersmann
              2. 0

                Vorhersehbar untauglicher Lösungsversuch

                ursus contionabundo
              3. 0
                pl
          2. 0
            Matthias Apsel
            1. 0
              Pit
          3. 0
            beatovich
            1. 0
              Pit
      2. 0
        pl
        1. 0
          Pit
          1. 0
            Mitleser
            • meinung
            • regex
          2. 0
            pl
            1. 0
              Rolf B
              1. 0
                pl
                1. 0
                  Rolf B
                  1. 0
                    pl
            2. 0
              Gunnar Bittersmann
      3. 0
        dedlfix
        1. 0
          Pit