Domanda

Ancora una volta ho colpito il muro.

Come sostituire i caratteri di escape usando le espressioni regolari? Se il carattere di tabulazione (\ t) si presenta più di due volte, voglio sostituire quelle due o più ricorrenze con un singolo \ t. Ad esempio se \ t \ t \ t arriva, allora voglio sostituirlo solo con \ t. Come fare questo?

Sto affrontando un altro problema relativo alla lettura del file di testo e all'applicazione di espressioni regolari.

Sto usando C # per leggere file di testo e per espressioni regolari. Quando apro un file di testo (file con estensione txt), ottengo una visualizzazione normale del file. Ma quando leggo lo stesso file usando " textReader " e lo memorizzo in una stringa, ricevo un testo simile a questo:

  

O K \ t \ t \ t \ t \ t \ tEmail:
  k.o@gmail.com \ rPhone: + 91
  992 \ t \ r \ r Riepilogo esperienza
  Business Intelligence e dati
  progettista di magazzino con oltre 6
  anni di esperienza lavorativa in OLAP
  Project. \ R \ r \ rTechnology \ rBelow è una
  elenco di importanti prodotti software
  e strumenti su cui ho lavorato
  con. \ r \ rSoftware
  Prodotti \ r \ a \ r \ aOperating
  Sistemi: \ rWINDOWS NT, WINDOWS 2000,
  Gestione UNIX del database
  Sistemi: Oracle 8i, Oracle 9i, Oracle
  10g, SQL-Server 7.0, DB2 \ rSoftware
  Pacchetti: \ rVSS, ER Win, M1 \ rFourth
  Linguaggio di generazione: \ rPL / SQL,
  SQL * PLUS \ rTools & amp;
  Tecnologie: \ rOracle Warehouse
  Builder 10.1.0.4.0, ORACLE 9i AS,
  Fase di individuazione dei report di Oracle ORACLE
  8.0, Fast Track 8.5, DB @ Cube, JavaScript, JSP, JDEV, BI BEANS, ASP,
  ASP.NET, Ab
  Initio \ r \ r \ a \ r \ a \ v \ r \ r \ fAssignments \ rLa
  i dettagli dei vari incarichi
  che ho gestito sono elencati qui,
  in cronologico
  ordine. \ r \ rName \ r \ aTutti i dati Dennison
  Magazzinaggio \ r \ a \ r \ AClient \ r \ aAvery
  Dennison, sfida nel progetto
  è alimentare EDW da
esistenti   magazzini con dati in
  
aggregata   livello. \ r \ a \ r \ a \ r \ rName \ r \ aAOL BI
  (Omniture) \ rite team. Progettazione
  codifica e test insieme a
  coordinamento con il team in loco.
  \ r \ a \ r \ aTools & amp; Tecnologie \ r \ Aunix
  Piattaforma, Oracle 10g, Py. Non solo
  fornendo il requisito corretto ma
  anche la performance deve essere in
  
accettabili   gamma. \ r \ a \ r \ a \ r \ r \ r \ r \ r \ r \ r \ r \ r \ r \ r \ RNAME \ r \ AAIW
  Eventi (ABSA) \ r \ a \ r \ aClient \ r \ aABSA,
  Sudafrica \ r \ a \ r \ aP

cioè, tutti i caratteri di escape come \ s, \ r, \ f sono visibili. Per questo motivo, l'espressione regolare che funziona con il testo normale non funziona quando leggo lo stesso testo nella variabile stringa.

Qualcuno sa come risolvere questo problema?

Grazie

Ho un'altra domanda. Voglio abbinare il testo alla fine della riga. Ho provato a usare $ per questo. Ad esempio, per abbinare il testo che termina con "assegnazione", ho usato l'assegnazione regex $. Ha funzionato con il testo normale. Ma quando eseguo questo regx sul testo fornito dallo streamreader, questo regex non funziona. Il lettore di stream fornisce stringhe come Assignments \ r \ r \ f. Come abbinare la fine della riga o l'inizio della riga a questo tipo di testo?

È stato utile?

Soluzione

Stai cercando di far corrispondere la stringa " \ r " , giusto? Dovrai scappare dal personaggio di escape per farlo:

"(\\r)*"

Questa espressione corrisponderà a " \ r " un numero qualsiasi di volte. Funziona perché " \\ " sfugge a un " \ " letterale. Puoi applicare la stessa idea anche per abbinare " \ t " .

Altri suggerimenti

/\t{2,}/\t/

sostituisce due o più schede con un singolo carattere.

Per il carattere di tabulazione usare qualcosa del genere:

/(\t)*/\1/g
  1. Crea un gruppo con un carattere (il carattere tab) e abbinalo il più possibile.
  2. Sostituisci la corrispondenza completa con il singolo carattere
  3. (Globale) usa il modello per il testo completo.

Quindi potresti usare la stessa espressione per gli altri caratteri di escape che vuoi sostituire.

È possibile sostituire \\ t \\ t \\ t con \\t{3}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top