Как написать уточненное регулярное выражение типа в Scala для строки со значениями 1-9

У меня есть строковый литерал, который отправляется в метод. У метода есть типобезопасный параметр, который принимает строку.

Типобезопасный параметр должен содержать a в качестве первой буквы, затем любое число, кроме нуля.

Я написал matcher в изысканных типах в Scala

import eu.timepit.refined.string.MatchesRegex
import eu.timepit.refined._



type versionRegex = MatchesRegex[W.`"""a\\d?"""`.T]
type version = String Refined versionRegex

Проблема в том, что он принимает число от 1 до 9 Скажи a1, a2 и т. д. К сожалению a0 также поддерживается. Я хочу избежать 0

Есть ли способ усилить регулярное выражение?

1 ответ

Вы можете явно исключить 0 (это особенно полезно, если вы хотите исключить число, которое находится не в начале или в конце диапазона)

a(?!0)\d?
type versionRegex = MatchesRegex[W.`"""a(?!0)\\d?"""`.T]

Или просто укажите, какие номера вы хотите разрешить:

a[1-9]?
type versionRegex = MatchesRegex[W.`"""a[1-9]?"""`.T]
Другие вопросы по тегам