Как получить регулярное выражение, которое проверяет наличие пробелов или табуляций, но не символов новой строки. Я пробовал, \sно обнаружил, что он тоже проверяет новые строки.
Я использую C # / WPF, но это не имеет значения.
Ответы:
Используйте классы персонажей: [ \t]
\t?
Как отметил @ Eiríkr Útlendi, в принятом решении учитываются только два символа пробела: горизонтальная табуляция (U + 0009) и разрывной пробел (U + 0020). Он не учитывает другие символы пробелов, такие как неразрывные пробелы (которые встречаются в тексте, с которым я пытаюсь разобраться). Более полный список пробельных символов включен в Википедию, а также упоминается в связанном ответе Perl . Простое решение C #, учитывающее эти другие символы, может быть построено с использованием вычитания класса символов.
[\s-[\r\n]]
или, включая решение Eiríkr tlendi, вы получите
[\s\u3000-[\r\n]]
Примечание. Для тех, кто работает с текстом CJK (китайский, японский и корейский), двухбайтовое пространство (Unicode \u3000) не включено ни в \sодну из реализаций, которые я пробовал до сих пор (Perl, .NET, PCRE, Python). Вам нужно будет либо сначала нормализовать свои строки (например, заменив все \u3000на \u0020), либо вам придется использовать набор символов, который включает этот код в дополнение к любому другому пробелу, на который вы нацеливаетесь, например [ \t\u3000].
Если вы используете Perl или PCRE, у вас есть возможность использовать \hсокращение для горизонтальных пробелов , которые, по-видимому, включают однобайтовое пространство, двухбайтовое пространство и табуляцию, среди прочего. Подробнее см. Ветку Сопоставление пробелов, но не новых строк (Perl) .
Однако, \hнасколько мне удалось судить , это сокращение не было реализовано для .NET и C #.
\h(представленная в Java 8) включает \u3000, но \sне включает, если вы не установите режим UNICODE_CHARACTER_CLASS (представленный в Java 7).
Если вы хотите заменить пробел ниже, код работал у меня вC#
Regex.Replace(Line,"\\\s","");
Для вкладки
Regex.Replace(Line,"\\\s\\\s","");
\hкласса символов только для perl , но он показывает, что есть много других пробельных символов, на случай, если вам нужно добавить их в список здесь.