val emp
: List
[String
] = List
("customer_bal_history_1_36",
"customer_bal_history_1_36_1",
"customer_bal_history_1_36_2",
"customer_bal_history_1_36_3",
"customer_credit_history_37_72_1",
"customer_credit_history_37_72_2",
"customer_credit_history_37_72_3",
"employee_1",
"employee_10",
"address",
"pincode",
"domain_1",
"domain_2",
"vehicle_1",
"vehicle_2",
"vendor_account_1",
"vendor_account_2") val pattern
= """^[^\d_]*_[^\d_]*_\D*_""".
r val res
= emp.
foldLeft(Map
[String, List
[String
]]()){ case (acc, name
) => pattern.
findFirstMatchIn(name
) match { case Some
(ns
) => acc +
(ns.
group(0) -
> (name
:: acc.
getOrElse(ns.
group(0), Nil
))) }
}.values.toList
println(res)
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoJdmFsIGVtcDogTGlzdFtTdHJpbmddID0gTGlzdCgiY3VzdG9tZXJfYmFsX2hpc3RvcnlfMV8zNiIsImN1c3RvbWVyX2JhbF9oaXN0b3J5XzFfMzZfMSIsImN1c3RvbWVyX2JhbF9oaXN0b3J5XzFfMzZfMiIsImN1c3RvbWVyX2JhbF9oaXN0b3J5XzFfMzZfMyIsImN1c3RvbWVyX2NyZWRpdF9oaXN0b3J5XzM3XzcyXzEiLCJjdXN0b21lcl9jcmVkaXRfaGlzdG9yeV8zN183Ml8yIiwiY3VzdG9tZXJfY3JlZGl0X2hpc3RvcnlfMzdfNzJfMyIsImVtcGxveWVlXzEiLCAiZW1wbG95ZWVfMTAiLCAiYWRkcmVzcyIsInBpbmNvZGUiLCJkb21haW5fMSIsImRvbWFpbl8yIiwidmVoaWNsZV8xIiwidmVoaWNsZV8yIiwidmVuZG9yX2FjY291bnRfMSIsInZlbmRvcl9hY2NvdW50XzIiKQoJdmFsIHBhdHRlcm4gPSAiIiJeW15cZF9dKl9bXlxkX10qX1xEKl8iIiIucgoJdmFsIHJlcyA9IGVtcC5mb2xkTGVmdChNYXBbU3RyaW5nLCBMaXN0W1N0cmluZ11dKCkpeyBjYXNlIChhY2MsIG5hbWUpID0+CgkgIHBhdHRlcm4uZmluZEZpcnN0TWF0Y2hJbihuYW1lKSBtYXRjaCB7CgkgICAgY2FzZSBTb21lKG5zKSA9PiBhY2MgKyAobnMuZ3JvdXAoMCkgLT4gKG5hbWUgOjogYWNjLmdldE9yRWxzZShucy5ncm91cCgwKSwgTmlsKSkpCgkgICAgY2FzZSBfID0+IGFjYwoJICB9Cgl9LnZhbHVlcy50b0xpc3QKCnByaW50bG4ocmVzKQoKfQ==