2'den fazla beyaz boşlukla eşleşecek ancak yeni satırla eşleşmeyecek normal ifade


89

Bir dizedeki 2'den fazla beyaz boşluğu değiştirmek istiyorum ancak yeni satırları değil, bu normal ifadeye sahibim: \s{2,}ama aynı zamanda yeni satırlarla da eşleşiyor.

Yeni satırları değil, yalnızca 2 veya daha fazla beyaz alanı nasıl eşleştirebilirim?

C # kullanıyorum


@nihcap - Aslında, C # 'nın kendi normal ifade çeşidi yoktur, .Net ortak kütüphanesinin bir parçasıdır. Bu durumda, .Net ve C #, kullanışlı etiketlerdir.
Kobi

Yanıtlar:


163

Eşleştirmek istediğiniz beyaz boşluk karakterlerini bir karakter sınıfının içine koyun. Örneğin:

[ \t]{2,}

2 veya daha fazla boşluk veya sekmeyle eşleşir.

Şunları da yapabilirsiniz:

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

hangi dışında herhangi beyaz boşluk kömürü maçları \rve \n(sermaye o notta iki kez en azından Siçinde \Skısaltmasıdır [^\s]).


Son cümlenizde "kısaltmak" ile neyi kastediyorsunuz? Bu steno olmadan tüm normal ifade nasıl görünürdü?
Lonnie Best

5
@LonnieBest, normal ifadelerde, \ w gibi kaçış dizileri için, genellikle büyük harfli çıkış dizisinin küçük harf kaçış dizilerinin ters karakter kümesidir. Örneğin \ d, \ D'nin tersidir, \ s, \ S'nin tersidir, \ w, \ W'nin tersidir, vb. Ayrıca, [abc] gibi [] ile sınırlandırılmış bir karakter sınıfı içinde, bir [^ abc] kullanarak tersini yapın. Bu nedenle \ S, [^ \ s] 'ye eşdeğerdir ve buna izin verilmiş olsaydı, izin verilmeyen gösterime [^^ \ S] de eşdeğer olurdu. (^^ bir
tersin

@DejayClayton Teşekkürler, bunu bilmiyordum.
Lonnie Best

Bu cevap işe yaradı, ama neden \s{2,}devam eden yeni satırlar alıyor? Eğer öyle olsaydı \n\s{2,}anlarım. Ve parantez içinde birebir boşluk yazmak neden işe yarar?
Bit-az

"Bu yanıt işe yaradı, ancak \ s {2,} neden devam eden yeni satırları alıyor?" çünkü \sboşluklar, sekmeler ve satır sonlarıyla eşleşir. "Ve neden parantez içinde birebir boşluk yazmak işe yarıyor?" Bunun hakkında başka ne söyleyeceğimi bilmiyorum :)
Bart Kiers

0

Yalnızca iki boşluğu hedefleyen normal ifade: [] {2,} Normal ifadedeki parantezler karakter sınıfıdır. Yani sadece oradaki karakterler. Burada sadece boşluk. Aşağıdaki kıvrık ayraç, iki veya daha fazla kez anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.