我正在尝试编写一个用于匹配由句点分隔的字符串的正则表达式。例如,
所有这些都是有效的,但是
但是,
我不明白为什么。
"abc", "abc.def", "a.b.c.e.f"
所有这些都是有效的,但是
"abc..def", ".abc", "abc."
无效
以下是我在Scala中的正则表达式代码
object Test {
def main(args: Array[String]) {
val TestPattern = "^([a-z]+)(\\.?[a-z]+)*".r
val x: String = "abc.def.hij"
x match {
case TestPattern(a,b) => println(a + b)
case _ => println("Not Found")
}
}
}
这里是我的正则表达式:
"^([a-z]+)(\\.?[a-z]+)*".r
这个有两个组件,
1. Starts with a-z
2. Repeat (has 0 or 1 dot, one or more from a-z) zero or more times
但是,
Input: abc.def.hij
Output: abc.hij
我不明白为什么。
.def
在输出中没有显示出来。