Регулярний вираз для відповідності більше 2 пробілів, але не нового рядка


87

Я хочу замінити всі більше 2 пробілів у рядку, але не нові рядки, я маю цей регулярний вираз: \s{2,}але він також відповідає новим рядкам.

Як я можу зіставити лише 2 пробіли, а не нові рядки?

Я використовую c #


@nihcap - Насправді, C # не має власного стилю регулярного виразу, він є частиною загальної бібліотеки .Net. У цьому випадку .Net та C # є корисними тегами.
Кобі

Відповіді:


159

Помістіть пробіли, яким ви хочете відповідати, всередині класу символів. Наприклад:

[ \t]{2,}

відповідає 2 або більше пробілам або вкладкам.

Ви також можете зробити:

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

який відповідає будь-якому пробілу, крім \rі \nпринаймні двічі (зауважте, що величина " Sв" \Sскорочена [^\s]).


Що ви маєте на увазі під "коротким терміном" у своєму останньому реченні? Як би виглядав весь регулярний вираз без цього скороченого тексту?
Lonnie Best

5
@LonnieBest у регулярних висловлюваннях, для екранованих послідовностей, таких як \ w, часто домовляється, що пропускна послідовність у верхньому регістрі є зворотним набором символів у нижчих регістрах. Наприклад, \ d обернено \ D, \ s обернено \ S, \ w обернено \ W тощо. А також, у наборі класів символів, розділених знаком [], таких як [abc], можна вказати обернено, використовуючи [^ abc]. Таким чином, \ S еквівалентно [^ \ s], що також було б еквівалентно забороненому позначенню [^^ \ S], якби це було дозволено. (^^ не є допустимим способом подання оберненого до оберненого.)
Dejay Clayton

@DejayClayton Дякую, я цього не знав.
Лонні Бест

Ця відповідь спрацювала, але чому вона береться за \s{2,}нові рядки? Якби це було, \n\s{2,}я б зрозумів. І чому введення буквальних пробілів у дужки працює?
трохи менше

"Ця відповідь спрацювала, але чому \ s {2,} захоплює нові рядки, продовжуючи її?" тому що \sвідповідає пробілам, вкладкам та розривам рядків. "А чому введення буквального пробілу в дужках працює?", Ну, помилка, бо це так. Не знаю, що ще сказати про це :)
Барт Кіерс

0

Regex для націлювання лише на два пробіли: [] {2,} Дужки в регулярному виразі - це клас символів. Це означає просто символи там. Тут просто космос. Наступна фігурна дужка означає два або більше разів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.