Pergunta

Mais uma vez eu bati na parede.

Como substituir caracteres de escape usando expressões regulares? Se caractere de tabulação (\ t) occures mais de duas vezes, eu quero substituir os dois ou mais ocorrências por único \ t. Por exemplo, se \ t \ t \ t vem, então eu quero substituí-lo com \ t somente. Como fazer isso?

Estou enfrentando mais um problema em relação a leitura de arquivos de texto e aplicar expressões regulares para ele.

Eu estou usando C # para ler arquivo de texto e para expressões regulares. Quando eu arquivo de texto aberto (arquivo com extensão txt), eu obter uma visão normal do arquivo. Mas quando li o mesmo arquivo usando "TextReader" e armazená-lo na cadeia, eu recebo texto algo como isto:

O K \ t \ t \ t \ t \ t \ tEmail:
k.o@gmail.com \ rPhone: + 91
992 \ t \ r \ rExperience Resumo
\ RBusiness Inteligência e dados
designer de armazém com mais de 6
anos de experiência de trabalho em OLAP
Projeto. \ R \ r \ rTechnology \ rBelow é um
lista de importantes produtos de software
e ferramentas que eu tenho trabalhado
com. \ r \ rSoftware
Produtos \ r \ a \ r \ aOperating
Sistemas: \ rWINDOWS NT, Windows 2000,
UNIX \ rDatabase Gestão
Sistemas: \ rOracle 8i, Oracle 9i, a Oracle
10g, SQL-Server 7.0, DB2 \ rSoftware
Pacotes: \ rVSS, ER ganhar, M1 \ rFourth
Generation Language: \ RPL / SQL,
SQL * PLUS \ rTools &
Technologies: \ rOracle Armazém
Builder 10.1.0.4.0, Oracle 9i AS,
Oracle Discoverer Relatórios de Dados Stage
8,0, Fast Track 8.5, DB @ Cube, JavaScript, JSP, Jdev, feijão BI, ASP,
ASP.NET, Ab
Initio \ r \ r \ a \ r \ a \ v \ r \ r \ fAssignments \ rThe
detalhes das várias atribuições
que eu tenho tratado são listados aqui,
em cronológica
ordem. \ r \ RNAME \ r \ Aavery Dennison dados
Warehousing \ r \ a \ r \ AClient \ r \ Aavery
Dennison, ele desafiar no projeto
é alimentar EDW de
existente armazéns que tem dados em um
agregada
nível. \ r \ a \ r \ a \ r \ RNAME \ r \ aAOL BI
(Omniture) \ equipa rito. Concepção,
codificação e testes junto com
coordenação com a equipe no local.
\ R \ a \ r \ aTools & Technologies \ r \ Aunix
Platform, Oracle 10g, Py. Não só
entregar a exigência correto, mas
também o desempenho tem de estar em

aceitável range. \ r \ a \ r \ a \ r \ r \ r \ r \ r \ r \ r \ r \ r \ r \ r \ RNAME \ r \ AAIW
Eventos (ABSA) \ r \ a \ r \ AClient \ r \ aABSA,
África do Sul \ r \ a \ r \ aP

ou seja, todos os caracteres de escape como \ s, \ r \ f são visíveis. Devido a isso, a expressão regular que funciona com o trabalho normal de texto does not quando li mesmo texto variável de cadeia.

Qualquer um sabe como resolver este problema?

Graças

Eu tenho mais uma consulta. Eu quero corresponder texto no final da linha. Eu tentei usar $ para isso. Por exemplo, para combinar texto terminando com "atribuição", eu usei atribuição regex $ .Ele trabalhou com texto normal. Mas quando eu executar este RegX no texto dado por StreamReader, isso não funciona regex. leitor de fluxo dá strings como atribuições \ r \ r \ f.How ao fim jogo da linha ou o início da linha com este tipo de texto?

Foi útil?

Solução

Você está tentando corresponder ao "\r" corda, certo? Você terá que escapar o caractere de escape para fazê-lo:

"(\\r)*"

Esta expressão irá corresponder "\r" qualquer número de vezes. Ele funciona porque "\\" escapa a um "\" literal. Você pode aplicar a mesma idéia para combinar "\t" também.

Outras dicas

/\t{2,}/\t/

substitui dois ou mais guias com um único personagem.

Para o guia uso de char algo como isto:

/(\t)*/\1/g
  1. Faça um grupo com um char (a guia de char) e combiná-lo tanto quanto possível.
  2. Substitua o jogo completo com o caráter único
  3. (Global) usar o padrão para o texto completo.

Em seguida, você poderia usar a mesma expressão para os outros caracteres escaparam você deseja substituir.

Você pode substituir \\t\\t\\t com \\t{3}

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top