正则表达式用于n目录文件路径

时间:2017-06-07 17:18:31

标签: regex scala

我试图使用正则表达式来评估给定路径是否有效:

可接受的值列表:

 1. /a_B_1/b_Sc2/c_d3/23_DS_xy/some_file_name.txt
 2. /x_y_q/ffs/www/A/a_ol/some_file_name.txt
 3. /tsf/ggg/wWw/abc/a_o@l/some=file name.csv
 4. /a/b/c/d/some file.txt

正如您在所有群组中看到的,可接受的范围是[a-zA-Z0-9_]。只有最后一组可以有spaces, @, =

团体订购:/<group1>/<group2>/<group3>/<group4>/<group5>

第5组可以有子目录,因此可以有'*'

我试过了:

"""/?[^/\\n]+/([^/\\n]+)/([^/\\n]+)/([^/\\n]+)/([^/\\n]+)/.*""".r

"""/(^[a-zA-Z0-9-_]+)/(^[a-zA-Z0-9-_]+)/(^[a-zA-Z0-9-_]+)/(^[a-zA-Z0-9-_]+)/(^[a-zA-Z0-9-_\\s]*)""".r

"""/([\\w,\\s-_]+)/([\\w,\\s-_]+)/([\\w,\\s-_]+)/([\\w,\\s-_]+)/([\\w,\\s]*)""".r

有人可以指导吗?

示例代码

val regex = """ ... """.r
val testString = "/a/b/c/d/some file.txt"
regex.findFirstMatchIn(testString) match {
    case Some(r) => println(r)
    case _ => println("Regex did not match")
}

1 个答案:

答案 0 :(得分:0)

不确定您的问题是什么,但请注意,您不需要在三引号字符串中转义后退。

像这样div { border: 2px solid rgba(0,0,0,0.1); width: 150px; } a { width: 100px; display:inline-block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }似乎应该按照你所描述的那样做。