scala正则表达式的含义
scala regex meaning
我是 scala 的新手,讨厌正则表达式 :D
目前我正在调试一段代码
def validateReslutions(reslutions: String): Unit = {
val regex = "(\d+-\d+[d,w,m,h,y],?)*"
if (!reslutions.matches(regex)) {
throw new Error("no match")
} else {
print("matched")
}
}
validateReslutions(reslutions = "(20-1w,100-1w)")
}
问题是它没有为这个输入生成匹配项,那么如何更正正则表达式以匹配这个输入
您的 (20-1w,100-1w)
字符串在开头和结尾包含一对括号,其余部分与您的 (\d+-\d+[d,w,m,h,y],?)*
正则表达式匹配。由于 String#matches
需要完整的字符串匹配,因此出现异常。
在正则表达式中包含括号模式以避免异常:
def validateReslutions(reslutions: String): Unit = {
val regex = """\((\d+-\d+[dwmhy],?)*\)"""
if (!reslutions.matches(regex)) {
throw new Error("no match")
} else {
print("matched")
}
}
validateReslutions(reslutions = "(20-1w,100-1w)")
// => matched
参见Scala demo。
注意用于定义字符串文字的三重引号,您可以在其中使用单个反斜杠来定义文字反斜杠字符。
此外,请注意字符 class 中没有逗号,它们匹配文本中的文字逗号,它们并不表示字符 class 中的“或”。
我是 scala 的新手,讨厌正则表达式 :D 目前我正在调试一段代码
def validateReslutions(reslutions: String): Unit = {
val regex = "(\d+-\d+[d,w,m,h,y],?)*"
if (!reslutions.matches(regex)) {
throw new Error("no match")
} else {
print("matched")
}
}
validateReslutions(reslutions = "(20-1w,100-1w)")
}
问题是它没有为这个输入生成匹配项,那么如何更正正则表达式以匹配这个输入
您的 (20-1w,100-1w)
字符串在开头和结尾包含一对括号,其余部分与您的 (\d+-\d+[d,w,m,h,y],?)*
正则表达式匹配。由于 String#matches
需要完整的字符串匹配,因此出现异常。
在正则表达式中包含括号模式以避免异常:
def validateReslutions(reslutions: String): Unit = {
val regex = """\((\d+-\d+[dwmhy],?)*\)"""
if (!reslutions.matches(regex)) {
throw new Error("no match")
} else {
print("matched")
}
}
validateReslutions(reslutions = "(20-1w,100-1w)")
// => matched
参见Scala demo。
注意用于定义字符串文字的三重引号,您可以在其中使用单个反斜杠来定义文字反斜杠字符。
此外,请注意字符 class 中没有逗号,它们匹配文本中的文字逗号,它们并不表示字符 class 中的“或”。