Мне нужно создать регулярное выражение для определения пар ключ-значение, разделенных запятыми. Ключ и значение могут иметь буквы (как прописные, так и строчные), цифры, специальные символы (- _, /.). Следующее регулярное выражение работает, когда специальные символы следуют за символами c алфавита, но когда специальный символ стоит перед символами c алфавита, оно не работает. Например, «ключ1. = Значение1-; ключ2 / = значение2-» работает, но «.key1 = значение1-; ключ2 / = значение2-» не работает.
import scala.util.matching.Regex
object TestReges {
def main(args: Array[String]): Unit = {
//val inputPattern : String= "1one-=1;two=2"
//val inputPattern : String = "-"
//val inputPattern : String= "two"
val inputPattern : String= "key1-=value1;key2=,value2."
val tagValidator: Regex = "(?:(\\w*\\d*-*_*,*/*\\.*)=(\\w*\\d*-*_*,*/*\\.*)(?=;|$))".r
//Pattern p = Pattern.compile("(?:(^[a-z]+)=(^[a-z]+)(?=&|$))");
//Matcher m = p.matcher(input);
//System.out.println(m.groupCount());
println(tagValidator.findAllMatchIn(inputPattern).size)
// while (m.find()) {
// System.out.println("key="+m.group(1));
// System.out.println("value="+m.group(2));
// }
} }