#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");
}
Что мне нравится, так это то, что гораздо яснее, что вам не нужна строка с двумя, .
а также .
не должно быть в конце. И это действительно может быть быстрее, чем использование регулярного выражения.