15. april 2005 - 19:31
Der er
5 kommentarer og 1 løsning
Alle mellemrum der ikke er i gåseøjne
Jeg bruger denne lille expression til at finde alle mellemrum (1 eller flere) i en tekst "[ ]+" Problemet er at jeg ikke vil have at den tager mellemrum med, hvis de er omgivet af " tegn. Feks. hvis jeg har denne sætning en "to tre" fire skal mellemrummet mellem 'to' og 'tre' ikke tages med. Hvordan gør jeg det?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
15. april 2005 - 21:27
#1
regexp i php, erstatter mellemrum med '-' : $text = 'en "to tre" fire'; echo preg_replace('/(".*?")?(?<!$1) /', '$1-', $text);
15. april 2005 - 21:53
#2
Ikke sikker på jeg er helt med. Det jeg prøver er at splitte en tekst op. Hvis jeg har teksten fra før skulle jeg få dette array : arr[0] => 'en' arr[1] => '"to tre"' arr[2] => 'fire' Problemet er at jeg får dette arr[0] => 'en' arr[1] => '"to' arr[2] => 'tre"' arr[3] => 'fire' Her er min kode (det er python, men skulle ikke være svært at forstå) import re fh = open( 'test.txt', 'r' ) i = 0 lines = {} while (1) : line = fh.readline( ) if ( line == '' ) : break line = re.sub( "\n", "", line ) lines[i] = line i = i + 1 version = float( lines[0][5:8] ) caps = re.split( "[ ]+", lines[2] ) array = {} i = 0 j = 3 ln = len( lines ) - 3 while ( i < ln ) : array[i] = {} vals = re.split( "[ ]+", lines[j] ) # <--- Denne linie k = 1 while ( k < len( caps ) ): array[i][caps[k]] = vals[k] k = k + 1 i = i + 1 j = j + 1 print vals fh.close( )
15. april 2005 - 23:13
#3
prøv vals = re.findall( "\".+?\"|[^ ]+", lines[j] ) # <--- Denne linie
15. april 2005 - 23:39
#4
Ser sgu ud til at virke. Tak for hjælpen, lægger du et svar?
16. april 2005 - 00:43
#5
ok. En lille ændring: "\".+?\"|[^ \"]+" nu splitter den også, efter 'en', hvis strengen ser sådan ud: en"to tre" fire
16. april 2005 - 01:12
#6
Tak for hjælpen :)
Kurser inden for grundlæggende programmering