Нужна помощь с регулярным выражением

#regex #string

#регулярное выражение #строка

Вопрос:

Возможно ли это сделать с помощью одного регулярного выражения?

Мне нужно сопоставлять только те строки, которые имеют ровно одну точку, но ограничение заключается в том, что эта точка не должна быть в конце строки.

Пример:

 abc.d will match

.abcd will match

abcd. will not match
  

Ответ №1:

Да, вы можете сделать это одним регулярным выражением:

 ^[^.]*.[^.] $
  

Комментарии:

1. 1 — вы заставили меня изучить другой и лучший способ написания этого регулярного выражения!

Ответ №2:

Мне действительно нравится ответ @codaddict, но как насчет чего-нибудь без регулярных выражений? (Код C # ниже)

 if(a.Split('.').Length>2 || a.EndsWith("."))
    {
        Console.WriteLine("invalid");
    }
  

Что мне нравится, так это то, что гораздо яснее, что вам не нужна строка с двумя, . а также . не должно быть в конце. И это действительно может быть быстрее, чем использование регулярного выражения.