| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Ekstraktion Fra : Dieter Britz | 
  Dato :  13-06-08 15:00 |  
  |   
            Jeg har en streng, der består af flere linjer, der specificerer en
 citation. Fx kan der stå
 
 Navn H;
 Tidsskrift 17 (2000) 44--46
 "Titel"
 
 og mere. Der er ca. 1400 af disse "items", og jeg er i gang med at
 konvertere dem til BibTeX form vha Perl. Alt virker fint, bortset
 fra et enkelt problem: Det hænder, at der er en ekstra linje med, fx
 
 {In Japanese}
 
 i, og denne linje kan enten være lige efter angivelsen af tidsskriftet,
 eller i nogle tilfælde også efter titlen.
 
 Kan jeg ekstrahere denne linje, og samtidigt fjerne den fra en sådan
 gruppe ("item") ? Hvordan?
 
 Jeg har det sådan nu, at hver item kommer som en streng i et større
 array, lad os kalde hver af dem $item, som jeg så piller fra hinanden.
 Hvis jeg kunne fjerne den ovennævnte linje, ville alt gå fint derefter,
 men linjen skal naturligvis bevares under et andet navn, fx $note.
 -- 
 Dieter Britz (britz<at>chem.au.dk)
  
            
             |   |   
            
        
 
            
         
           Michael Zedeler (13-06-2008) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  13-06-08 23:08 |  
  |   
            Dieter Britz wrote:
 > Jeg har en streng, der består af flere linjer, der specificerer en
 > citation. Fx kan der stå
 > 
 > Navn H;
 > Tidsskrift 17 (2000) 44--46
 > "Titel"
 > 
 > og mere. Der er ca. 1400 af disse "items", og jeg er i gang med at
 > konvertere dem til BibTeX form vha Perl. Alt virker fint, bortset
 > fra et enkelt problem: Det hænder, at der er en ekstra linje med, fx
 > 
 > {In Japanese}
 > 
 > i, og denne linje kan enten være lige efter angivelsen af tidsskriftet,
 > eller i nogle tilfælde også efter titlen.
 > 
 > Kan jeg ekstrahere denne linje, og samtidigt fjerne den fra en sådan
 > gruppe ("item") ? Hvordan?
 
 Hvis formen er {In <x>} hvor <x> er et ord, kan du altid fjerne det fra 
 en vilkårlig streng og samtidig gemme det med følgende:
 
 $streng = <<'END_CITATION';
 Navn H;
 Tidsskrift 17 (2000) 44--46
 {In Japanese}
 "Titel"
 END_CITATION
 $streng =~ s/({In \w+})\s*//s;
 print "Nu ser det sådan ud:\n${streng}Og jeg fandt dette her: $1\n";
 
 Det giver dette output:
 Nu ser det sådan ud:
 Navn H;
 Tidsskrift 17 (2000) 44--46
 "Titel"
 Og jeg fandt dette her: {In Japanese}
 
 Husk lige at tuborg-klammer kan blive fortolket hvis de står bestemte 
 steder i regexes. Hvis du bygger videre på ovenstående, så kan det blive 
 nødvendigt at escape dem.
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
            
         
           Dieter Britz (17-06-2008) 
         
	
            | Kommentar Fra : Dieter Britz | 
  Dato :  17-06-08 15:32 |  
  |   
            Michael Zedeler wrote:
 
 > Dieter Britz wrote:
 >> Jeg har en streng, der består af flere linjer, der specificerer en
 >> citation. Fx kan der stå
 >> 
 >> Navn H;
 >> Tidsskrift 17 (2000) 44--46
 >> "Titel"
 >> 
 >> og mere. Der er ca. 1400 af disse "items", og jeg er i gang med at
 >> konvertere dem til BibTeX form vha Perl. Alt virker fint, bortset
 >> fra et enkelt problem: Det hænder, at der er en ekstra linje med, fx
 >> 
 >> {In Japanese}
 >> 
 >> i, og denne linje kan enten være lige efter angivelsen af tidsskriftet,
 >> eller i nogle tilfælde også efter titlen.
 >> 
 >> Kan jeg ekstrahere denne linje, og samtidigt fjerne den fra en sådan
 >> gruppe ("item") ? Hvordan?
 > 
 > Hvis formen er {In <x>} hvor <x> er et ord, kan du altid fjerne det fra
 > en vilkårlig streng og samtidig gemme det med følgende:
 > 
 > $streng = <<'END_CITATION';
 > Navn H;
 > Tidsskrift 17 (2000) 44--46
 > {In Japanese}
 > "Titel"
 > END_CITATION
 > $streng =~ s/({In \w+})\s*//s;
 > print "Nu ser det sådan ud:\n${streng}Og jeg fandt dette her: $1\n";
 > 
 > Det giver dette output:
 > Nu ser det sådan ud:
 > Navn H;
 > Tidsskrift 17 (2000) 44--46
 > "Titel"
 > Og jeg fandt dette her: {In Japanese}
 > 
 > Husk lige at tuborg-klammer kan blive fortolket hvis de står bestemte
 > steder i regexes. Hvis du bygger videre på ovenstående, så kan det blive
 > nødvendigt at escape dem.
 > 
 > Mvh. Michael.
 
 Tak! Der er blot et lille problem tilbage. Hvis der ikke er en
 linje med {In...}, så bliver $1 lige med indeholdet af første
 linje i $streng. Men i så fald vil jeg gerne have at $note bliver
 undefined, så at jeg senere kan lade være med at printe den ud.
 Hvordan gør jeg?
 -- 
 Dieter Britz (britz<at>chem.au.dk)
  
            
             |   |   
            
        
 
            
         
            Dieter Britz (17-06-2008) 
         
	
            | Kommentar Fra : Dieter Britz | 
  Dato :  17-06-08 15:41 |  
  |   
            Dieter Britz wrote:
 
 > Michael Zedeler wrote:
 > 
 >> Dieter Britz wrote:
 >>> Jeg har en streng, der består af flere linjer, der specificerer en
 >>> citation. Fx kan der stå
 >>> 
 >>> Navn H;
 >>> Tidsskrift 17 (2000) 44--46
 >>> "Titel"
 >>> 
 >>> og mere. Der er ca. 1400 af disse "items", og jeg er i gang med at
 >>> konvertere dem til BibTeX form vha Perl. Alt virker fint, bortset
 >>> fra et enkelt problem: Det hænder, at der er en ekstra linje med, fx
 >>> 
 >>> {In Japanese}
 >>> 
 >>> i, og denne linje kan enten være lige efter angivelsen af tidsskriftet,
 >>> eller i nogle tilfælde også efter titlen.
 >>> 
 >>> Kan jeg ekstrahere denne linje, og samtidigt fjerne den fra en sådan
 >>> gruppe ("item") ? Hvordan?
 >> 
 >> Hvis formen er {In <x>} hvor <x> er et ord, kan du altid fjerne det fra
 >> en vilkårlig streng og samtidig gemme det med følgende:
 >> 
 >> $streng = <<'END_CITATION';
 >> Navn H;
 >> Tidsskrift 17 (2000) 44--46
 >> {In Japanese}
 >> "Titel"
 >> END_CITATION
 >> $streng =~ s/({In \w+})\s*//s;
 >> print "Nu ser det sådan ud:\n${streng}Og jeg fandt dette her: $1\n";
 >> 
 >> Det giver dette output:
 >> Nu ser det sådan ud:
 >> Navn H;
 >> Tidsskrift 17 (2000) 44--46
 >> "Titel"
 >> Og jeg fandt dette her: {In Japanese}
 >> 
 >> Husk lige at tuborg-klammer kan blive fortolket hvis de står bestemte
 >> steder i regexes. Hvis du bygger videre på ovenstående, så kan det blive
 >> nødvendigt at escape dem.
 >> 
 >> Mvh. Michael.
 > 
 > Tak! Der er blot et lille problem tilbage. Hvis der ikke er en
 > linje med {In...}, så bliver $1 lige med indeholdet af første
 > linje i $streng. Men i så fald vil jeg gerne have at $note bliver
 > undefined, så at jeg senere kan lade være med at printe den ud.
 > Hvordan gør jeg?
 
 Undskyld, jeg har lige fundet ud af det. Tak for din hjelp.
 
 -- 
 Dieter Britz (britz<at>chem.au.dk)
  
            
             |   |   
            
        
 
            
         
            Michael Zedeler (17-06-2008) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  17-06-08 18:45 |  
  |   
            Dieter Britz wrote:
 > Michael Zedeler wrote:
 > 
 >> Dieter Britz wrote:
 >>> Jeg har en streng, der består af flere linjer, der specificerer en
 >>> citation. Fx kan der stå
 >>>
 >>> Navn H;
 >>> Tidsskrift 17 (2000) 44--46
 >>> "Titel"
 >>>
 >>> og mere. Der er ca. 1400 af disse "items", og jeg er i gang med at
 >>> konvertere dem til BibTeX form vha Perl. Alt virker fint, bortset
 >>> fra et enkelt problem: Det hænder, at der er en ekstra linje med, fx
 >>>
 >>> {In Japanese}
 >>>
 >>> i, og denne linje kan enten være lige efter angivelsen af tidsskriftet,
 >>> eller i nogle tilfælde også efter titlen.
 >>>
 >>> Kan jeg ekstrahere denne linje, og samtidigt fjerne den fra en sådan
 >>> gruppe ("item") ? Hvordan?
 >> Hvis formen er {In <x>} hvor <x> er et ord, kan du altid fjerne det fra
 >> en vilkårlig streng og samtidig gemme det med følgende:
 >>
 >> $streng = <<'END_CITATION';
 >> Navn H;
 >> Tidsskrift 17 (2000) 44--46
 >> {In Japanese}
 >> "Titel"
 >> END_CITATION
 >> $streng =~ s/({In \w+})\s*//s;
 >> print "Nu ser det sådan ud:\n${streng}Og jeg fandt dette her: $1\n";
 >>
 >> Det giver dette output:
 >> Nu ser det sådan ud:
 >> Navn H;
 >> Tidsskrift 17 (2000) 44--46
 >> "Titel"
 >> Og jeg fandt dette her: {In Japanese}
 >>
 >> Husk lige at tuborg-klammer kan blive fortolket hvis de står bestemte
 >> steder i regexes. Hvis du bygger videre på ovenstående, så kan det blive
 >> nødvendigt at escape dem.
 > 
 > Tak! Der er blot et lille problem tilbage. Hvis der ikke er en
 > linje med {In...}, så bliver $1 lige med indeholdet af første
 > linje i $streng.
 
 Det lyder meget mærkeligt. Kan du ikke bringe (en del af) koden her?
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
            
         
             Dieter Britz (18-06-2008) 
         
	
            | Kommentar Fra : Dieter Britz | 
  Dato :  18-06-08 08:52 |  
  |   
            Michael Zedeler wrote:
 
 > Dieter Britz wrote:
 >> Michael Zedeler wrote:
 >> 
 >>> Dieter Britz wrote:
 >>>> Jeg har en streng, der består af flere linjer, der specificerer en
 >>>> citation. Fx kan der stå
 >>>>
 >>>> Navn H;
 >>>> Tidsskrift 17 (2000) 44--46
 >>>> "Titel"
 >>>>
 >>>> og mere. Der er ca. 1400 af disse "items", og jeg er i gang med at
 >>>> konvertere dem til BibTeX form vha Perl. Alt virker fint, bortset
 >>>> fra et enkelt problem: Det hænder, at der er en ekstra linje med, fx
 >>>>
 >>>> {In Japanese}
 >>>>
 >>>> i, og denne linje kan enten være lige efter angivelsen af tidsskriftet,
 >>>> eller i nogle tilfælde også efter titlen.
 >>>>
 >>>> Kan jeg ekstrahere denne linje, og samtidigt fjerne den fra en sådan
 >>>> gruppe ("item") ? Hvordan?
 >>> Hvis formen er {In <x>} hvor <x> er et ord, kan du altid fjerne det fra
 >>> en vilkårlig streng og samtidig gemme det med følgende:
 >>>
 >>> $streng = <<'END_CITATION';
 >>> Navn H;
 >>> Tidsskrift 17 (2000) 44--46
 >>> {In Japanese}
 >>> "Titel"
 >>> END_CITATION
 >>> $streng =~ s/({In \w+})\s*//s;
 >>> print "Nu ser det sådan ud:\n${streng}Og jeg fandt dette her: $1\n";
 >>>
 >>> Det giver dette output:
 >>> Nu ser det sådan ud:
 >>> Navn H;
 >>> Tidsskrift 17 (2000) 44--46
 >>> "Titel"
 >>> Og jeg fandt dette her: {In Japanese}
 >>>
 >>> Husk lige at tuborg-klammer kan blive fortolket hvis de står bestemte
 >>> steder i regexes. Hvis du bygger videre på ovenstående, så kan det blive
 >>> nødvendigt at escape dem.
 >> 
 >> Tak! Der er blot et lille problem tilbage. Hvis der ikke er en
 >> linje med {In...}, så bliver $1 lige med indeholdet af første
 >> linje i $streng.
 > 
 > Det lyder meget mærkeligt. Kan du ikke bringe (en del af) koden her?
 > 
 > Mvh. Michael.
 
 Jeg havde dummet mig ved at sætte en sætning som 
 
 $note = $1;
 
 længere ned i koden. Jeg havde glemt at $1 indeholder det der er
 sket sidst. Da jeg flyttede det op lige under din regex, var det OK.
 -- 
 Dieter Britz (britz<at>chem.au.dk)
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |