Come sostituire i caratteri di escape nell'espressione regolare?
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?
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
- Crea un gruppo con un carattere (il carattere tab) e abbinalo il più possibile.
- Sostituisci la corrispondenza completa con il singolo carattere
- (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}