Regex para corresponder a mais de 2 espaços em branco, mas não nova linha

87

Eu quero substituir todos os mais de 2 espaços em branco em uma string, mas não novas linhas, eu tenho esta regex: \s{2,}mas também está combinando novas linhas.

Como posso combinar 2 ou mais espaços em branco apenas e não novas linhas?

Estou usando c #

Bruno
fonte
@nihcap - Na verdade, C # não tem seu próprio tipo de regex, ele faz parte da biblioteca comum .Net. Nesse caso, .Net e C # são tags úteis.
Kobi,

Respostas:

159

Coloque os caracteres de espaço em branco que você deseja combinar dentro de uma classe de personagem. Por exemplo:

[ \t]{2,}

corresponde a 2 ou mais espaços ou tabulações.

Você também pode fazer:

[^\S\r\n]{2,}

que corresponde a qualquer caractere de espaço em branco, exceto \re \npelo menos duas vezes (observe que a letra maiúscula Sem \Sé abreviação de [^\s]).

Bart Kiers
fonte
O que você quer dizer com "abreviação de" em sua última frase? Qual seria a aparência de toda a expressão regular sem essa abreviação?
Lonnie Best de
5
@LonnieBest em expressões regulares, para sequências de escape como \ w, geralmente é uma convenção que a sequência de escape em maiúsculas é o conjunto de caracteres inverso das sequências de escape em minúsculas. Por exemplo, \ d é inverso de \ D, \ s é inverso de \ S, \ w é inverso de \ W, etc. E também, dentro de um conjunto de classes de caracteres delimitado por [] como [abc], é possível especificar um inverta usando [^ abc]. Assim, \ S é equivalente a [^ \ s], que também seria equivalente à notação não permitida [^^ \ S], se fosse permitida. (^^ não é uma forma válida de representar o inverso de um inverso.)
Dejay Clayton
@DejayClayton Obrigado, não sabia disso.
Lonnie Best,
Essa resposta funcionou, mas por que \s{2,}pegar novas linhas depois disso? Se fosse, \n\s{2,}eu entenderia. E por que digitar um espaço literal entre colchetes funciona?
bit-less
"Esta resposta funcionou, mas por que \ s {2,} pega novas linhas ao fazê-la?" porque \scorresponde a espaços, tabulações e quebras de linha. "E por que digitar um espaço literal entre colchetes funciona?", Bem, errar, porque funciona. Não sei mais o que dizer sobre isso :)
Bart Kiers
0

Regex para atingir apenas dois espaços: [] {2,} Os colchetes em regex são classes de caracteres. Significa apenas os caracteres lá. Aqui apenas espaço. A seguinte chave significa duas ou mais vezes.

João
fonte