Соответствует одному символу в регулярном выражении .net

1

Согласно документации MSDN, в . персонаж

Соответствует любому одиночному символу, кроме \n.

В этом случае, почему это регулярное выражение не соответствует?:

Regex.IsMatch("c",@"[.]")
  • 1
    regexpal.com Этот сайт полезен для экспериментов с регулярными выражениями.
  • 0
    Приветствия. Я обычно использую это. Похоже, я не знал, что вы не можете использовать подстановочный знак внутри группы символов. Одна из тех вещей, которые меня поразили, я зашел так далеко, не обнаружив!
Теги:

4 ответа

5
Лучший ответ

вы соответствуете [.] что означает характер . Просто используйте . чтобы получить ваш результат. [] Означает любой из символов внутри . теряет свое особое значение.

См. Демонстрацию.

http://regex101.com/r/qC9cH4/19

c захватывается второй группой, а не первой.

1

Вы не можете использовать . внутри [] чтобы получить все символы. Удалите [] и он будет работать.

1

Вы можете просто использовать:

Console.WriteLine(Regex.IsMatch("c", @"."));

Если вы делаете это часто, добавьте

public static class Extensions
{
    public static bool Match(this string value, String query)
    {
        return Regex.IsMatch(value, query);
    }

    public static void Out<t>(this t value)
    {
        Console.WriteLine(value);
    }
}

После этого вы можете использовать

"c".Match(".").Out();
  • 0
    Очень верно (и на самом деле у меня уже есть все виды методов расширения для строковых операций). Я знаю, что код может быть более кратким, его намеренно многословным, так как я хотел убедиться, что ничего не пропустил, пока id не решил это.
1

Заменить @"[.]"; с @"."; // Использовать .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню