Regex.IsMatch не работает, но Regex.Match работает хорошо, почему? [Дубликат]

Учитывая, что никто не упомянул об этом ...

Некоторые языки высокого уровня, такие как Python и Java, поставляются с инструментами для преодоления ограничений двоичной с плавающей запятой. Например:

Ни одно из этих решений не идеально (особенно, если мы смотрим на выступления, или если мы требуют очень высокой точности), но все же они решают большое количество проблем с двоичной арифметикой с плавающей запятой.

2
задан Wiktor Stribiżew 3 February 2016 в 15:41
поделиться

1 ответ

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

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

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

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

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

3
ответ дан Wiktor Stribiżew 4 September 2018 в 07:10
поделиться
Другие вопросы по тегам:

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