Класс символов [A-Za-z0-9_.-~/]+
соответствует всем символам, которые следуют до конца строки.
Эта часть ([0-9]{9,10}).
будет возвращаться назад, пока не сможет соответствовать полученным цифрам, начиная с 9 цифры и это будет в группе захвата.
Примечание , чтобы либо экранировать дефис \-
, либо поместить его в начало или конец класса символов, иначе он может совпадать с range.
Один из вариантов - использовать слово bounary \b
перед сопоставлением цифр
^https://www\.mywebsite\.com/[A-Za-z0-9_.~/-]+\b([0-9]{9,10})\.htm$
Regex demo
Другой способ может быть соответствие /
прямо перед цифрами.
^https://www\.mywebsite\.com/[A-Za-z0-9_.~/-]+/([0-9]{9,10})\.htm$
Regex demo
Если также могут быть символы a-zA-Z или underscoe перед цифрами и поддерживается просмотр, вы также можете утверждать, что до (?<!\d)
^https://www\.mywebsite\.com/[A-Za-z0-9_.~/-]+(?<!\d)([0-9]{9,10})\.htm$
Regex demo