import java.util.*
fun main(args: Array<String>) {
val singleLinePattern = "^(?!\\./)(?!.*/\$)(?!.*\\.\\./)[0-9A-Za-z!\\-_*'(). /]+\$"
println(singleLinePattern)
println("----------")
val validPathPattern = buildString {
append("^") // Start of the line
append("(?!\\./)") // Negative lookahead to exclude "./"
append("[0-9A-Za-z_*'(). /]+") // Character set allowing specified characters
append("(?!/\$)") // Negative lookahead to exclude "/" at the end
append("\$") // End of the line
}.trimIndent()
print(validPathPattern)
}
aW1wb3J0IGphdmEudXRpbC4qCiAKZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPikgewogICAgdmFsIHNpbmdsZUxpbmVQYXR0ZXJuID0gIl4oPyFcXC4vKSg/IS4qL1wkKSg/IS4qXFwuXFwuLylbMC05QS1aYS16IVxcLV8qJygpLiAvXStcJCIKICAgIHByaW50bG4oc2luZ2xlTGluZVBhdHRlcm4pCiAgICAKICAgIHByaW50bG4oIi0tLS0tLS0tLS0iKQogICAgCiAgICB2YWwgdmFsaWRQYXRoUGF0dGVybiA9IGJ1aWxkU3RyaW5nIHsKCSAgICBhcHBlbmQoIl4iKSAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgb2YgdGhlIGxpbmUKCSAgICBhcHBlbmQoIig/IVxcLi8pIikgICAgICAgICAgICAgLy8gTmVnYXRpdmUgbG9va2FoZWFkIHRvIGV4Y2x1ZGUgIi4vIgoJICAgIGFwcGVuZCgiWzAtOUEtWmEtel8qJygpLiAvXSsiKSAvLyBDaGFyYWN0ZXIgc2V0IGFsbG93aW5nIHNwZWNpZmllZCBjaGFyYWN0ZXJzCgkgICAgYXBwZW5kKCIoPyEvXCQpIikgICAgICAgICAgICAgIC8vIE5lZ2F0aXZlIGxvb2thaGVhZCB0byBleGNsdWRlICIvIiBhdCB0aGUgZW5kCgkgICAgYXBwZW5kKCJcJCIpICAgICAgICAgICAgICAgICAgIC8vIEVuZCBvZiB0aGUgbGluZQoJfS50cmltSW5kZW50KCkKICAgIHByaW50KHZhbGlkUGF0aFBhdHRlcm4pCQp9