Почему это регулярное выражение соответствует строке, содержащей более 10 нужных символов?C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Почему это регулярное выражение соответствует строке, содержащей более 10 нужных символов?

Сообщение Гость »


У меня есть следующее регулярное выражение, и я использую https://www.regextester.com/ для его проверки.

^(?=^.{10})[a-zA-Z]+:[0-9]+\s* Требование состоит в том, чтобы входные данные могли состоять из буквенных символов и цифр, разделенных двоеточием с некоторым количеством пробелов в конце. Ввод должен начинаться с буквенных символов, но может содержать лишние символы после завершающего пробела или последнего числа, которое я не хочу сопоставлять после 10-го. Соответствующая строка должна содержать ровно 10 символов. В следующих примерах строк я подчеркнул то, что, по моему мнению, будет соответствовать. Я не привязываюсь к $ в конце, поскольку знаю, что рассматриваемая входная строка, вероятно, будет содержать более 10 символов, поэтому я не пытаюсь проверить совпадение всей строки.

A:12345678 // соответствует, это нормально

A:123456789 // Должно соответствовать только цифре 8

FOO:567890s123 // должно соответствовать только 0

Фактический результат заключается в том, что он соответствует всему, что находится после 10-го символа, если это буквенно-цифровой символ или пробел. Я ожидаю, что он будет соответствовать 10-му символу и не более того. Как исправить это выражение?

Обновление: в конечном итоге я попытаюсь включить это регулярное выражение в программу на C++, используя соответствующее регулярное выражение boost.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»