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



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



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

502   4  

4 ответов:

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

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

[ \t]

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

Википедия а также ссылки в связанный 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#, как лучше всего я смог сказать.

Comments

    Ничего не найдено.