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

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

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

65 голосов | спросил Jiew Meng 27 PM00000020000004731 2010, 14:02:47

4 ответа


0

Используйте классы символов: [ \t]

ответил Lekensteyn 27 PM00000020000004431 2010, 14:03:44
0

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

[ \t]

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

ответил Gumbo 27 PM00000020000000231 2010, 14:04:02
0

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

[\s-[\r\n]]

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

[\s\u3000-[\r\n]]
ответил erdomke 27 J0000006Europe/Moscow 2016, 16:11:22
0

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

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

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

ответил Eiríkr Útlendi 20 AMpWed, 20 Apr 2016 00:17:49 +030017Wednesday 2016, 00:17:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132