Как написать уточненное регулярное выражение типа в 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]