Подтвердить что ты не робот

Регулярное выражение: найти пробелы (вкладки/пробел), но не символы новой строки

Как я могу получить регулярное выражение, которое проверяет пробелы или вкладки, но не символы новой строки. Я попробовал \s, но выяснил, что он также тестирует новые строки.

Я использую С#/WPF, но это не имеет значения.

4b9b3361

Ответ 1

Использование классов символов: [ \t]

Ответ 2

Попробуйте этот набор символов:

[ \t]

Это соответствует только пробелу или табулятору.

Ответ 3

Как отметил @Eiríkr Útlendi, в принятом решении учитываются только два символа пробела: горизонтальная табуляция (U + 0009) и пробел (U + 0020). Он не учитывает другие пробельные символы, такие как неразрывные пробелы (которые находятся в тексте, с которым я пытаюсь разобраться). Более полный список пробельных символов включен в Википедию и также указан в связанном ответе Perl. Простое решение С#, которое учитывает эти другие символы, может быть построено с использованием вычитания класса символов

[\s-[\r\n]]

или, в том числе решение Eiríkr Útlendi, вы получаете

[\s\u3000-[\r\n]]

Ответ 4

Примечание.. Для тех, кто имеет дело с текстом CJK (китайский, японский и корейский), двухбайтовое пространство (Unicode \u3000) не включено в \s для любой реализации, которую я пробовал до сих пор (Perl,.NET, PCRE, Python). Сначала вам нужно либо сначала нормализовать свои строки (например, заменив все \u3000 на \u0020), либо вам придется использовать набор символов, который включает этот код в дополнение к любому другому пробелу, на который вы нацеливаетесь, например [ \t\u3000].

Если вы используете Perl или PCRE, у вас есть возможность использовать сокращенную строку \h для горизонтальных пробелов, которая, как представляется, включает в себя однобайтовое пространство, двухбайтовое пространство и вкладку, среди прочих. Подробнее см. В разделе Матч без пробелов, но не строки новой строки (Perl).

Тем не менее, это сокращение \h не было реализовано для .NET и С#, насколько я мог это рассказать.

Ответ 5

Если вы хотите заменить пробел ниже кода, у меня работает в С#

Regex.Replace (линия, "\\ s", "");

Для вкладки

Regex.Replace (линия, "\\ s\\s", "");