Удаление всех несловарных символов с помощью регулярного выражения (разделители регулярных выражений в шаблоне регулярного выражения C #)

У меня есть такое регулярное выражение:

name = dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487
name = Regex.Replace(name, @"/\W/g", "");

Это регулярное выражение должно заменить «/», «-«, «.» с «».
Но это не так, может кто-нибудь объяснить мне, почему?

2

Решение

Не используйте разделители регулярных выражений:

name = Regex.Replace(name, @"\W", "");

В C # нельзя использовать разделители регулярных выражений, так как синтаксис для объявления регулярного выражения отличается от синтаксиса PHP, Perl или JavaScript или других, которые поддерживают <action>/<pattern>(/<substituiton>)/modifiers объявление регулярного выражения

Просто чтобы избежать путаницы в терминологии: встроенные модификаторы (обеспечение поиска без учета регистра, многострочный, однострочный, подробный и другие режимы), безусловно, поддерживаются и могут использоваться вместо соответствующих RegexOptions флаги (хотя количество возможных RegexOptions flags выше, чем у встроенных модификаторов). Еще, разделители регулярных выражений не влияют на шаблон регулярных выражений вообще, они являются лишь частью синтаксиса объявления и не влияют на сам шаблон. Скажем, они просто заменители ; или новая строка, разделяющая строки кода.

В C # разделители регулярных выражений не нужны и поэтому не поддерживаются. Perl-стиль s/\W//g будет написано как var replaced = Regex.Replace(str, @"\W", string.Empty);, И так далее.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]